PHP:python exec命令

时间:2014-04-03 12:16:23

标签: php python

我正在使用PHP和Python进行测试,我正在尝试打印文本。

test.py:

import sys

print "x => " + sys.argv[1] + " y => " + sys.argv[2]

当我这样做时:

  

sudo python test.py 5 9

输出结果为:

  

x => 5 y => 9

但是当我在PHP中这样做时:

<?php
exec("sudo python /home/pi/python/test.py 6 3");
?>

它在控制台中没有显示任何内容。不是错误。

console 我也尝试过system()或shell_exec,但它不起作用。

这怎么工作?

3 个答案:

答案 0 :(得分:0)

我认为问题在于,运行PHP / WebServer的用户无法访问sudo,也无法访问/ home / pi。总而言之,我不会像这样使用sudo,而是为运行PHP / WebServer的用户设置适当的权限来执行所述python脚本。

要解决它:

test.py放入webroot(通常为/var/www)并从您的php脚本中删除sudo

<?php
exec("python /var/www/test.py 6 3");
?>

您可能还需要提供python二进制文件的完整路径,如下所示:

<?php
exec("/usr/bin/python /var/www/test.py 6 3");
?>

要找出真正存储python二进制文件的位置,可以使用命令which,如下所示:

which python
/usr/bin/python

答案 1 :(得分:0)

尝试

<?php
exec("sudo python /home/pi/python/test.py 6 3 2>&1");
?>

答案 2 :(得分:0)

exec()函数返回已执行命令的最后一行(请参阅documentation)。要在控制台上查看它,您需要输出它:

echo exec("sudo python /home/pi/python/test.py 6 3");

如果您想查看已执行命令的完整输出,请查看passthru()