我想从php函数执行python脚本test.py
。
#!/usr/bin/env python
import random
def test() :
print("test success")
if __name__ == '__main__':
test()
我可以使用php命令行成功执行它:
php -r '$message = exec("python3 ~/../scripts/test.py"); print_r($message);'
我已将以下内容添加到我的php代码中:
$message = exec("python3 ~/../scripts/test.py", $output, $return_val);
当我执行它时,不输出任何内容(devtools中没有错误)。打印变量时,$output
和$message
为空,$return_val
为2(misuse of shell builtins according to Bash documentation)。
我知道在将以下内容添加到同一个函数后允许exec()
:
if (exec('echo TEST') == 'TEST')
{
echo 'exec works!';
}
可能导致此错误的原因是什么?如何用php执行python脚本?
答案 0 :(得分:4)
您的网络服务器不共享您的主目录,因此~
将指向错误的位置。改为指定文件的完整路径。
python3
将在2
找不到文件时退出,并在stderr上显示有用的消息。 Web服务器错误日志将确认这一点,并将2>&1
添加到您的命令中以将stderr捕获为变量中的stdout。