将php作为子进程运行

将php作为子进程运行,php,python,subprocess,Php,Python,Subprocess,我需要从python中调用一个PHP脚本。我在StackOverflow上发现此线程: 所以我使用这个方法来调用我的php脚本。但是,我得到以下错误: php is not recognised as an internal or external command 首先,我认为这是因为php不在我的PATH环境变量中,所以添加了它并在我的命令行中工作,但我的Python脚本不断返回相同的错误。我还尝试将php添加到我的PYTHONPATH中,得到了相同的结果。最后,我甚至尝试将php文件放在

我需要从python中调用一个PHP脚本。我在StackOverflow上发现此线程:

所以我使用这个方法来调用我的php脚本。但是,我得到以下错误:

php is not recognised as an internal or external command
首先,我认为这是因为php不在我的PATH环境变量中,所以添加了它并在我的命令行中工作,但我的Python脚本不断返回相同的错误。我还尝试将php添加到我的PYTHONPATH中,得到了相同的结果。最后,我甚至尝试将php文件放在php可执行文件所在的文件夹中,但这也不起作用

我需要更改什么才能使其正常工作

编辑

我的操作系统是Windows7。这是我正在使用的代码:

proc = subprocess.Popen("php C:/xampp/htdocs/test/test.php", shell=True, stdout=subprocess.PIPE)
script_response = proc.stdout.read()
我没有尝试从命令行运行python脚本,命令行不会产生错误并执行php脚本。然而,
script\u response
变量为空

这是我的
test.php
文件的最后一行:

return $aResult;

我检查了
$aResult
,它确实包含一个值,因此无法正确返回。我的php脚本中是否需要其他内容而不是
return

您可能需要使用php的完整路径,而不是简单地调用
php

如果您使用的是Unix系统,您可以通过在终端中键入
哪个php
来找到完整的路径,这应该会返回类似
/usr/bin/php
的内容。在Windows上,我认为您可以键入
where php.exe
来查找完整路径

然后在Python脚本中,您可以执行以下操作:

# Run PHP script
command = "/full/path/to/php /path/to/myscript.php"
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
response = process.stdout.read()
# Print response from PHP script
print response

您可以使用json在进程之间交换数据。将php脚本中的
return$result
替换为:

echo json_encode($result); 
在Python中:

import json
from subprocess import check_output

result = json.loads(check_output(["php", "/path/to/test.php"]).decode('utf-8'))

如果未找到
php

您使用的是什么操作系统?请粘贴您使用的完整代码!(我假设您在Microsoft操作系统下)将PHP永久添加到您的环境变量中,然后启动一个新的命令行并启动python脚本编辑我的原始帖子。
return
在PHP进程中将转到位存储桶,因为没有PHP进程来读取该内部流。如果需要使用其他内容(在本例中为Python)读取它,请将其发送到其
STDOUT
(换句话说:
echo
print
值)。