我正在使用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");
?>
它在控制台中没有显示任何内容。不是错误。
我也尝试过system()或shell_exec,但它不起作用。
这怎么工作?
答案 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()
。