为什么我不能使用 python Popen 从 PHP 获得输出

Why can't I get output from PHP, using python Popen

我有一个程序使用 popen 从 python 调用 PHP,但我没有从我的调用中得到任何标准输出或标准错误。

有问题的行是:

task = subprocess.Popen(
        ['/usr/bin/php', exec_path],
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
        env=env
    )
stdout_str, stderr_str = task.communicate()
task_result = task.returncode

当我用 ls 替换 PHP 路径时,它起作用了:

task = subprocess.Popen(
    ['/bin/ls', exec_path],
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    env=env
)

stdout_str, stderr_str = task.communicate()
task_result = task.returncode
# Works as expected

当我 运行 来自 shell 的 PHP 命令时,它会产生输出。

作为参考,PHP 文件是:

<?
echo "YAY";
?>%  

我解决了我的问题。早些时候我写了文件内容,忘记了 flush() 它,所以当 exec 调用发生时文件是空的。