Saltar al contenido

Ejecutar un script de Python desde PHP

Haz todo lo posible por comprender el código de forma correcta previamente a utilizarlo a tu proyecto si ttienes algo que aportar puedes compartirlo con nosotros.

Solución:

Probado en Ubuntu Server 10.04. Espero que te ayude también en Arch Linux.

En PHP use la función shell_exec:

Ejecute el comando a través de Shell y devuelva la salida completa como un string.

Devuelve el resultado del comando ejecutado o NULL si se produjo un error o el comando no produce ningún resultado.


En el archivo Python test.pyverifique este texto en la primera línea: (vea la explicación shebang):

#!/usr/bin/env python

Además, el archivo Python debe tener los privilegios correctos (ejecución para el usuario www-data/apache si el script PHP se ejecuta en el navegador o curl) y/o debe ser “ejecutable”. También todos los comandos en .py El archivo debe tener los privilegios correctos:

Tomado del manual de php:

Solo un recordatorio rápido para aquellos que intentan usar shell_exec en una plataforma tipo Unix y parece que no pueden hacerlo funcionar. PHP se ejecuta como usuario web en el sistema (generalmente www para Apache), por lo que debe asegurarse de que el usuario web tenga derechos sobre cualquier archivo o directorio que esté tratando de usar en el comando shell_exec. De lo contrario, no parecerá estar haciendo nada.

Para hacer ejecutable un archivo en plataformas tipo Unix:

chmod +x myscript.py

recomiendo usar passthru y manejar el búfer de salida directamente:

ob_start();
passthru('/usr/bin/python2.7 /srv/http/assets/py/switch.py arg1 arg2');
$output = ob_get_clean(); 

Si desea conocer el estado de retorno del comando y obtener la totalidad stdout sacarte pueden realmente usar exec:

$command = 'ls';
exec($command, $out, $status);

$out es un array de todas las lineas. $status es el estado de retorno. Muy útil para la depuración.

Si también quieres ver el stderr salida que puede jugar con proc_open o simplemente agregar 2>&1 para usted $command. Esto último suele ser suficiente para que las cosas funcionen y mucho más rápido de “implementar”.

Te mostramos las reseñas y valoraciones de los lectores

Si aceptas, tienes la libertad de dejar un tutorial acerca de qué te ha impresionado de este enunciado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *