Cómo ejecutar un script en perl php dentro de los mensajes de error y de captura?

StackOverflow https://stackoverflow.com/questions/2680192

  •  30-09-2019
  •  | 
  •  

Pregunta

Estoy intentando ejecutar un script Perl, así:

/usr/bin/ec2-consistent-snapshot 'vol-dr3131c2'

Cuando el script de Perl no sale usando 'mueren' e imprime un mensaje de error. Puedo ver ese mensaje de error al ejecutar manualmente, pero estoy logrando captar a través de PHP.

He intentado lo siguiente sin éxito:

exec($command,$output);
echo system($command,$output);
passthru($command);

¿Alguna idea?

¿Fue útil?

Solución

Usted podría intentar:

$command = "/usr/bin/ec2-consistent-snapshot 'vol-dr3131c2' > /tmp/exec.out 2>&1"
exec($command)
echo file_get_contents('/tmp/exec.out');

El '> /tmp/exec.out 2> & 1' vuelve a dirigir toda la salida a /tmp/exec.out, entonces PHP eco es la parte posterior archivo.

Otros consejos

no tienen acentos abiertos PHP?

$output = `$command 2> /tmp/command.err`;
if (looks_like_command_failed($output)) {
    $error_message = file_get_contents('/tmp/command.err');
}

El primer ejemplo dado en la documentación de la href="http://ca3.php.net/manual/en/function.system.php" rel="nofollow sistema () función menciona que es posible que funcione en los casos en que la salida no está siendo recibido por php. El ejemplo se recibe stderr por separado de la salida estándar, sin necesidad de utilizar un archivo temporal. El cartel no explica por qué este método tendría éxito cuando el sistema () no lo es. Así que hay una respuesta a la raíz del problema, pero tal vez una solución.

scripts de Perl mueren con sus mensajes va a stderr, por lo que necesita para capturar stderr, así como la salida estándar para ver qué pasaba.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top