2016-12-31 2 views
0

나는 빈 결과를받는 exec 명령으로 PHP 스크립트에서 파이썬 스크립트를 실행하고 있습니다. 셸에서 python 명령을 실행하면 올바르게 결과가 반환되고 로그는 자동으로 반환됩니다. 이 내 PHP 함수입니다 :파이썬의 PHP exec 스크립트는 빈 문자열을 반환합니다.

public function poll($palina){ 
    //set_include_path("/var/www/html/iPhone/inarrivo/python"); 
    $pythonCommand="python3.4 ../../python/palina.py $palina"; 
    $result=exec($pythonCommand); 
    echo "<blank>command=$pythonCommand result=$result</blank>"; 
    $resultData = json_decode($result, true); 
    if (!is_array($resultData)) { 
     error_log($resultData); 
     $resultData=Array(); 
    } 
    //print_r($resultData); 
    return $resultData; 
} 

이것은 호출 된 파이썬 스크립트입니다

#!/usr/local/bin/python3.4 

# change above line to point to local 
# python executable 

from xmlrpc.client import Server 
from pprint import pprint 
import sys, json 
import datetime, time 
palina=sys.argv[1] 
DEV_KEY = 'UuC378Q3l3Y4vtF8q2Hj3i5Up6OmZKb2' 

s1 = Server('http://muovi.roma.it/ws/xml/autenticazione/1') 
s2 = Server('http://muovi.roma.it/ws/xml/paline/7') 
token = s1.autenticazione.Accedi(DEV_KEY, '') 
res = s2.paline.Previsioni(token, palina, 'it') 
#pprint(res) 
arrivi=res.get('risposta').get('primi_per_palina')[0].get('arrivi') 
myList=[] 
for arrivo in arrivi: 
    if 'nessun_autobus' not in arrivo and 'non_monitorata' not in arrivo: 
     output={} 
     acapolinea=arrivo.get('a_capolinea') 
     output["busDestination"]=arrivo.get('destinazione') 
     output["wait"]=arrivo.get('annuncio') 
     if output["wait"]=='In Arrivo': 
      output["receiving"]=1 
     else: 
      output["receiving"]=0 
     meb=arrivo.get('meb') 
     output["busNumber"]=arrivo.get('linea') 
     output["busLines"]=arrivo.get('id_percorso') 
     output["time"]=arrivo.get('tempo_attesa') 
     output["stops"]=int(arrivo.get('distanza_fermate')) 
     output["palina"]=arrivo.get('id_palina') 
     output["inarrivo"]=arrivo.get('in_arrivo') 
     partenza= arrivo.get('prossima_partenza') 
     if acapolinea == 1: 
      output["receiving"]=2 
      output["acapolinea"]=acapolinea 
      if partenza: 
       s = datetime.datetime.strptime(partenza.value, "%Y%m%dT%H:%M:%S") 
       output["capolineaDate"]=s.strftime('%H:%M') 
     myList.append(output) 
print (json.dumps(myList)); 

는이 스크립트는 이전 서버에 괜찮 았는데. CentOS에서 php와 python이 올바르게 통합되도록 설정할 수 있습니까?

답변

1

python 스크립트가 작동하려면 전체 경로가 있어야합니다.

관련 문제