2011-03-31 13 views
11

J'ai du code écrit en PHP, mais j'ai aussi développé un script écrit en Python. Est-il possible d'appeler ce script Python à partir du code PHP?Comment appeler un script Python depuis PHP?

Si oui, comment puis-je passer des paramètres au script Python à partir du PHP?

J'ai essayé de trouver une réponse sans succès.

Quelqu'un peut-il me donner un indice?

+0

Oui sans aucun doute, il devrait être possible .. Mais s'il vous plaît donner un peu plus détails. Courez-vous à la fois via la ligne de commande ou via le Web? –

+3

Dupliquer - http://stackoverflow.com/questions/166944/calling-python-in-php? –

Répondre

24

Vous utilisez la fonction système: http://php.net/manual/en/function.system.php

Quelque chose comme ceci:

$mystring = system('python myscript.py myargs', $retval); 
+1

ce qui est censé être présent dans 'retval' et' mystring'. Sont-ils identiques ou différents, je suppose que 'retval' contiendra tout ce qui est présent sur la console. Pouvez-vous s'il vous plaît aider à comprendre cela aussi. –

+0

la confusion vient de l'utilisation de ret ** val **. La documentation est également fautive pour cela car ils nomment ce var return, puis le déclarent comme retval aussi. mais dans l'exemple ci-dessus $ retval est le statut d'exécution, un entier. et $ mystring est la dernière ligne de sortie du script que vous venez de lancer, une chaîne. J'espère que cela éclaircira les choses. – Nalaurien

+0

Le code retour ('$ retval' ici) d'un programme exécutable est un entier. La convention est "0" pour aucune erreur et toute autre chose est un code d'erreur spécifique à l'application. –

3

je réussi à faire fonction simple PY ([parametress], code) pour PHP. Vous pouvez presque inclure du code python dans votre PHP. Vous pouvez également transmettre certaines variables d'entrée simples au processus python. Vous ne pouvez pas de récupérer des données, mais je crois que cela pourrait être facilement fixé :) Pas ok pour l'utilisation à l'hébergement web (potentionally dangereux, appel système), je l'ai créé pour PHP-CLI ..

<?php 

function PY() 
{ 
$p=func_get_args(); 
$code=array_pop($p); 
if (count($p) % 2==1) return false; 
$precode=''; 
for ($i=0;$i<count($p);$i+=2) $precode.=$p[$i]." = json.loads('".json_encode($p[$i+1])."')\n"; 
$pyt=tempnam('/tmp','pyt'); 
file_put_contents($pyt,"import json\n".$precode.$code); 
system("python {$pyt}"); 
unlink($pyt); 
} 

//begin 
echo "This is PHP code\n"; 
$r=array('hovinko','ruka',6); 
$s=6; 

PY('r',$r,'s',$s,<<<ENDPYTHON 
print('This is python 3.4 code. Looks like included in PHP :)'); 
s=s+42 
print(r,' : ',s) 
ENDPYTHON 
); 
echo "This is PHP code again\n"; 
?> 
0

Oui vous pouvez utilisez simplement exec() pour appeler le programme python en php. programme d'échantillon simple que j'ai inclus ici. Vous devez spécifier votre chemin d'accès python.exe et votre chemin d'accès au fichier python.Il doit être spécifié dans l'environnement Windows.

1

Vous pouvez essayer ceci:

scripts python:

 test.py: 
     print "hello" 

Scripts puis php

index.php: 
    $i =`python test.py`; 
    echo $i; 
Questions connexes