我已经看到很多其他人遇到类似的问题,他们无法从PHP运行Python脚本。我遇到的情况也一样,但是我尝试了人们推荐的所有解决方案,但还是没有运气。我也有全新的系统安装,并且使脚本尽可能简单。无论我做什么,shell_exec()都会返回NULL。
这是如何复制我的问题:
<?php
$command = escapeshellcmd('sudo /usr/bin/python '.__DIR__.'/script.py');
$output = shell_exec($command);
exit(var_dump($output));
#!/usr/bin/python
print('Hello!')
因此,为尝试解决此问题,我还将.py文件的用户组更改为“ apache”,并在.py文件上运行了chmod + x。我确认ec2-user和apache在sudo组中。还是没有运气!所以我没有尝试过什么?我缺少什么,或者在哪里可以找到错误日志?
答案 0 :(得分:0)
使用文件常量__FILE__
来确定pyhton脚本的路径,只有在您应用dirname
函数的情况下,此方法才有效-否则您会得到类似/var/www/html/script.php/script.py
的信息,但是实际上只需要/var/www/html/script.py
。
有两种简单的解决方案。使用dirname
或直接使用__DIR__
常量。
$command = escapeshellcmd('sudo /usr/bin/python ' . __DIR__ . '/script.py');
或
$command = escapeshellcmd('sudo /usr/bin/python ' . dirname(__FILE__) . '/script.py');