2016-12-31 4 views
0

Я выполняю скрипт python из php один командой exec, получая пустой результат. Если я выполню команду python из оболочки, она правильно вернет правильные результаты, а журналы будут молчат; это мой PHP функция:Php exec скрипт python возвращает пустую строку

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 должен быть полный путь.

Смежные вопросы