使用php

时间:2015-04-28 19:16:55

标签: php python

我有一个需要由php运行的python脚本:

     <?php
     $command = escapeshellcmd('/home/Desktop/test.py');
     $output = shell_exec($command);
     echo $output;

     ?>

python脚本的输出是一个二进制文件,但我在日志中收到以下错误:             无法访问X显示器,是否正确设置了$ DISPLAY?

php代码在终端上工作正常,但是当我尝试从浏览器运行它时没有运气。知道发生了什么事吗?理想情况下,我不想改变我的计划。我想知道如何纠正X显示错误。有没有办法检查$ DISPLAY是否设置正确? (我正在使用Ubuntu)

我试过这个:pidof X&amp;&amp; echo&#34;是的X服务器正在运行&#34;在我的终端上,它说是的是在运行!#/ p>

3 个答案:

答案 0 :(得分:1)

将以下文本添加为​​Python脚本的第一行:

#!/usr/bin/python

如果没有这个,内核不知道运行脚本的解释器是什么,并且可能最终尝试使用/usr/bin/import启动它(因为该单词可能出现在脚本的第一行)。 import实用程序需要访问X11显示(基本上是截图实用程序),这就是您收到此错误的原因。

答案 1 :(得分:0)

您需要的python文件可能需要打开一个窗口才能运行。你说你看到它在终端运行了吗?什么是test.py?它具有支持性吗? 如果你尝试在PHP中使用它作为一个命令:(不是100%的shell逃脱赢了,所以可能需要对此进行评论)

python -c \'print \"Test\"\' 

并查看是否收到输出文本。如果是这样,它不是PHP的python问题,而test.py文件可能正在实例化需要$ DISPLAY var set的东西。 PHP没有设置$ DISPLAY var,因为它是shell命令而不是GUI。

答案 2 :(得分:-1)

尝试popen

$command = "/usr/bin/python /home/Desktop/test.py";
$handle = popen($command, "r");

&#34; R&#34;阅读

$read = fread($handle, 10);

10是您要输出的输出大小,

echo $read ;

希望它有所帮助,