2011-03-31 44 views
11

Tengo un código escrito en PHP, pero también he desarrollado un script escrito en Python. ¿Es posible llamar a este script Python desde el código PHP?¿Cómo llamar a un script de Python desde PHP?

En caso afirmativo, ¿cómo puedo pasar parámetros a la secuencia de comandos de Python desde PHP?

He intentado encontrar una respuesta sin éxito.

¿Alguien me puede dar una pista?

+0

Sí, sin duda, debe ser posible .. Pero, por favor dar un poco más detalles. ¿Está ejecutando tanto a través de línea de comandos o web –

+3

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

Respuesta

24

se utiliza la función del sistema: http://php.net/manual/en/function.system.php

Algo como esto:

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

lo que se supone que está presente en 'retval' y' mystring'. Son iguales o diferentes, supongo que 'retval' contendrá todo lo que está presente en la consola. ¿Puedes ayudarnos a entender eso también? –

+0

la confusión proviene del uso de ret ** val **. La documentación también tiene la culpa de esto, ya que nombran esta variable de retorno, y luego la declaran también como retval. pero en el ejemplo anterior, $ retval es el estado de ejecución, un entero. y $ mystring es la última línea de salida del script que acaba de ejecutar, una cadena. Espero que eso aclare las cosas. – Nalaurien

+0

El código de retorno ('$ retval' aquí) de un programa ejecutable es un número entero. La convención es '0' para que no haya errores y cualquier otra cosa es un código de error específico de la aplicación. –

3

logré hacer simple función PY ([parametress], código) para PHP. Casi puede incluir código python en su PHP. Puede pasar también algunas variables de entrada simples al proceso de Python. No se puede obtener ningún dato de vuelta, pero yo creo que fácilmente podría ser fijado :) No es aceptable para el uso en el alojamiento web (potentionally insegura, llamada al sistema), lo creé para 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

Sí se puede simplemente use exec() para llamar al programa python en php. programa de ejemplo simple que he incluido aquí.

$pyscript = 'G:\wamp\www\ll\test.py'; 
$python = 'C:\\Python27\\python.exe'; 

$cmd='$pyscript $python'; 

exec("$cmd", $output); 

Debe especificar su ruta de acceso python.exe y su ruta de archivo python. Deben ser necesarios en el entorno de Windows.

1

Puede probar esto:

scripts de Python:

 test.py: 
     print "hello" 

Scripts entonces PHP

index.php: 
    $i =`python test.py`; 
    echo $i; 
Cuestiones relacionadas