Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我不能使用python Popen从PHP获得输出_Php_Python_Shell_Popen - Fatal编程技术网

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

为什么我不能使用python Popen从PHP获得输出,php,python,shell,popen,Php,Python,Shell,Popen,我有一个用popen从python调用PHP的程序,我没有从调用中得到任何stdout或stderr 问题在于: task = subprocess.Popen( ['/usr/bin/php', exec_path], stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env ) stdout_str, stderr_str = task.communicate() t

我有一个用popen从python调用PHP的程序,我没有从调用中得到任何stdout或stderr

问题在于:

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";
?>%  

我解决了我的问题。早些时候,我编写了文件内容,但忘了刷新它,因此在执行调用时,文件是空的。

在这两种情况下,执行路径都是相同的,对吗?我想知道这是否是一个权限问题。但是我仍然能够从命令行执行该文件,如php/tmp/regraphd_testing_dir_A5wdrS/querys/tmp0AKqI6.php,但是是的,路径与php文件开头的路径相同,结尾的%是什么?哦,这只是shell表示没有新行