2014-10-29 4 views
0

파이썬에서 PHP 스크립트를 호출해야합니다. I에 유래에이 스레드를 발견 하위 프로세스로 PHP 실행

Execute php code in Python

그래서 나는 내 PHP 스크립트를 호출하는이 정확한 방법을 사용합니다. 나는 PHP 내 PATH 환경 변수에 없었기 때문에 그것이 생각

먼저
php is not recognised as an internal or external command 

때문에 추가하고 내 명령 줄에서 일했다,하지만 내 파이썬 스크립트는 같은 반환 유지 : 그러나, 나는 다음과 같은 오류가 발생합니다 오류. 나 또한 같은 결과와 함께, 내 PYTHONPATH에 PHP를 추가하려했습니다. 나는 결국 PHP 실행 파일이있는 폴더에 php 파일을 넣으려고했지만, 이것도 작동하지 않았습니다.

이 기능을 사용하려면 무엇을 변경해야합니까?

편집

내 운영 시스템이 내가 사용하고 코드입니다 윈도우 7입니다 :

proc = subprocess.Popen("php C:/xampp/htdocs/test/test.php", shell=True, stdout=subprocess.PIPE) 
script_response = proc.stdout.read() 

내 명령 줄에서 내 파이썬 스크립트를 실행하려고하지 않았다 오류를 생성하지 않으며 PHP 스크립트를 실행합니다. 그러나 script_response 변수는 비어 있습니다.

이 내 test.php 파일의 마지막 라인 :

return $aResult; 

내가 $aResult을 확인, 그것이 제대로 반환하지 그래서 값을 포함한다. return 대신 PHP 스크립트에서 다른 것이 필요합니까?

+0

사용중인 운영 체제는 무엇입니까? – Jerodev

+0

사용중인 전체 코드를 붙여주세요. – motanelu

+0

(나는 당신이 마이크로 소프트 운영체제를 사용하고 있다고 가정) 환경 변수에 PHP를 영구적으로 추가 한 다음, 새로운 명령 행을 시작하고 파이썬 스크립트를 실행하십시오. –

답변

2

. 와 PHP 스크립트에 return $result 교체 :

echo json_encode($result); 

그리고 파이썬을 :

import json 
from subprocess import check_output 

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

php 경우는 read this explanation about how Windows searches for executables 찾을 수 없습니다.

0

단순히 php을 호출하는 대신 PHP 전체 경로를 사용해야 할 수도 있습니다.

유닉스 시스템을 사용하는 경우 터미널에 which php을 입력하여 전체 경로를 찾을 수 있으며 그 결과는 /usr/bin/php과 같아야합니다. Windows에서는 where php.exe을 입력하면 전체 경로를 찾을 수 있다고 생각합니다.

그런 다음 파이썬 스크립트에서 당신이 할 수 있습니다 : 당신은 프로세스간에 데이터를 교환 할 수 JSON을 사용할 수

# 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 
관련 문제