Ejecutar un programa Python desde PHP

Resuelto
Chewquette -  
jordane45 Mensajes publicados 30427 Fecha de registro   Estado Moderador Última intervención   -

Hola,

Inicié Wamp Server y creé una carpeta que contiene un archivo .php y un archivo hello.py. El problema es que no importa lo que intente hacer, nada funciona. Es importante precisar que prefiero evitar las solicitudes ya que los dos programas deben ejecutarse en el servidor. Esto es lo que he intentado:

<?php $python_script = "hello.py"; $output = shell_exec("python" . $python_script); echo "<h1>Output:{$output}</h1>"; ?>

Mi archivo Python se parece a esto:

import sys #para recuperar argv más tarde print("Hello")

Intenté con exec() o incluso escapeshellcmd() que luego inserto en shell_exec() pero sin éxito. Con un var_dump() obtengo chemin-fichier-php php:numero-de-ligne:string '' (length=0).

¿Alguien sabría de dónde puede venir el problema?

3 respuestas

  1. jordane45 Mensajes publicados 30427 Fecha de registro   Estado Moderador Última intervención   4 833
     

    Hola

    Primero, falta un espacio después de la palabra python en tu línea de comandos.

    Además, creo que es necesario indicar la ruta completa hacia el ejecutable de python, de lo contrario podría no encontrar su ubicación para ejecutarlo


    .
    Cordialmente,
    Jordane

    1
  2. Chewquette
     

    Hola,

    Gracias por responder. He realizado las modificaciones, sin embargo nada se muestra después de la palabra "output" en la página. Aquí está la versión corregida:

    <?php $python_script = "C:/wamp64/www/php_py/hello.py"; $output = shell_exec("python " . $python_script); echo "<h1>Output: {$output} </h1>"; ?>

    He intentado con \\ o solo \ pero el resultado es el mismo. Sin embargo, al probar en cmd se ejecuta el programa Python.

    Edición: He probado en Ubuntu en lugar de Windows y funciona. El problema no parece venir del código PHP.

    0
  3. Chewquette
     

    Encontré la solución, a pesar de que Python está en mi ruta, no funcionaba en PHP y la configuración de php.ini en Wamp Server no tenía ningún campo que indicara que algunas funciones estaban desactivadas; la única solución, un poco primitiva pero funcional, es hacer:

    <?php $output = shell_exec("C:\ruta-a-python\Python3xx\python.exe hello.py"); echo "<h1>Output:" . $output . "</h1>"; ?>
    0
    1. jordane45 Mensajes publicados 30427 Fecha de registro   Estado Moderador Última intervención   4 833
       

      En realidad... Solo hiciste lo que te había dicho..

      La ruta hacia el ejecutable de Python...

      0