从php函数执行python脚本?

时间:2018-03-20 22:39:10

标签: php python bash

我想从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脚本?

1 个答案:

答案 0 :(得分:4)

您的网络服务器不共享您的主目录,因此~将指向错误的位置。改为指定文件的完整路径。

python3将在2找不到文件时退出,并在stderr上显示有用的消息。 Web服务器错误日志将确认这一点,并将2>&1添加到您的命令中以将stderr捕获为变量中的stdout。