2016-08-10 378 views
1

我正在制作一个android应用程序,首先将图像上传到服务器,并在服务器端,我想从PHP执行一个Python脚本。但我没有得到任何输出。当我从命令提示符访问Python脚本并运行python TestCode.py它成功运行并提供所需的输出。我从PHP使用下面的命令运行Python脚本:从PHP执行Python脚本

$result = exec('/usr/bin/python /var/www/html/Source/TestCode.py');

echo $result

但是,如果我运行一个简单的Python程序从PHP它的工作原理。

PHP有权访问和执行文件。

有什么我在这里失踪?

+0

高管本身不打印,它会回报* *输出的最后一行就会把输出的所有线路,第二个参数(如果有的话),如手册页会已告诉你; o/ – Jakumi

+1

我修改了它,仍然存在问题。有什么建议么?? –

+0

你有没有机会知道stderr和stdout之间的区别?因为exec - 据我所知 - 只处理stdout。如果你的testcode.py只产生stderr输出,你什么也看不到。 – Jakumi

回答

3
exec('/usr/bin/python /var/www/html/Source/TestCode.py', $output); 

var_dump($output); 

exec第二个参数会给输出

编辑:

exec('/usr/bin/python /var/www/html/Source/TestCode.py 2>&1', $output); 

2>&1 - 重定向到stderrstdout。现在如果有任何错误,将会填入$output

+1

我收到输出'array(0){}',这意味着我的数组是空的,但是当我运行python脚本时,它给了我输出。 –

+0

@AshutoshSingla更新。 – Jigar

1
  1. 首先用“which python”命令检查你的python PATH,检查结果是/ usr/bin/python。

  2. 如果您编写了#!/ usr/bin/sh,而不是用#!/ usr/bin/bash替换它,请检查您的“TestCode.py”。

  3. 执行这些命令 exec('/ usr/bin/python /var/www/html/Source/TestCode.py',$ result); 回声$结果

+1

我没有得到任何输出。 –

+1

好吧,只需发送TestCode.py文件,让我尽我所能。 –