PHP exec (): Ejecutar script bash para configurar el entorno y luego ejecutar el progtwig Python

Shell es tcsh. PHP v5.1.6. Redhat 5.7. Safe_mode está en OFF.

Ejecutando script php desde el navegador usando exec para:

  1. configurar el entorno a través del comando de origen en script bash
  2. ejecutar un progtwig python confiando en el entorno configurado por el script bash (salidas del progtwig a STDOUT)

Esto funciona desde la línea de comando ($ shell = tcsh):

/bin/bash -c "source /path-to-config-bash-script/config.sh; /bin/path-to-python /path-to-python-program/prog.py 2>&1" 

Esto no lo hace. El progtwig Python devuelve un error que indica que el entorno no está configurado correctamente (no puede encontrar ciertas bibliotecas, etc.):

 &1\""; $ret_val = exec( $cmd, $ret_arr, $err ); ?> 

Cuidados cuádruples y todo se ve bien.

¡Gracias!

Cuatro cosas para notar

1 – PHP no debe tener safe_mode activado para aprovechar exec()

2 – El script del script de shell necesita tener #!/bin/bash para ser declarado en la parte superior del archivo en lugar de ser pasado al exec()

3 – La secuencia de comandos python debe tener #!/usr/bin/python en la parte superior de la secuencia de comandos en lugar de intentar ejecutarlo a través de la instrucción exec() .

4 – Todos los directorios que se atraviesan para llegar al script deben ser legibles.

Entonces, la final debería verse así:

 $cmd = "/path-to-config-bash-script/config.sh; /path/to-python/program/prog.py 2>&1"; 

Esto debería resolver todos tus problemas.