【发布时间】:2021-06-05 11:51:31
【问题描述】:
我有一个简单的 PHP 脚本,它使用 shell_exec 调用 python 脚本,它应该返回结果“ok”
我似乎无法正常工作 - 没有通过 php 文件返回任何内容。我可以从 CLI 运行 python 脚本并且它可以工作,并且还可以运行 shell_exec 来运行其他函数并且可以工作。所以它是python特有的东西,我无法解决。
test.py:
#!/usr/bin/python3
import sys
id = sys.argv[1:]
#Do some stuff wih id
#Return success
sys.exit("ok")
index.php
<?php
$command = escapeshellcmd('/root/bin/tracker/test.py');
$output = shell_exec($command);
echo $output;
//This works
//$output = shell_exec("cat /etc/os-release");
//echo $output;
?>
运行 /root/bin/tracker/test.py 返回:
好的
我尝试将 test.py 的所有权设置为 www:www-run 并检查了 +x 权限。
这是在 SLES 15.1 上运行的 PHP 7.2.5 阿帕奇 2.4.33
【问题讨论】:
-
尝试添加 python 可执行文件的路径。比如:
/path/to/python /root/bin/tracker/test.py. -
还是不走运。尝试添加: $output = shell_exec("/usr/bin/python3 /root/bin/tracker/test.py");
-
sys.exit("ok")表示错误,根据docsshell_exec在发生错误时返回null。使用sys.exit(0)成功。 -
感谢您的测试。看起来像一些权限问题,因为当我运行 php index.php 它可以工作,但不是来自浏览器