php exec() no está ejecutando el comando


He intentado usar exec() con 'whoami' para comprobar si funciona y obtuve el resultado de

nt authority\system

Ahora necesito ejecutar un archivo .exe con parámetros de php a través de la función exec().

Probé esto en símbolo del sistema y en realidad ejecuta el programa con parámetros dados. Este es el comando de ejemplo.


NOTA el archivo exe obtiene 3 entradas (folder, file_name, report_file_nmae)

> ..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml

Pero cuando corro este comando desde php archivo:

exec('..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml');

No está pasando nada. Esta es la primera vez que estoy usando la función exec (), así que no estoy familiarizado con sus detalles. ¿Qué pasa?

Intenté usar:

  • \\ en lugar de \
  • escapeshellarg() en el directorio
  • agregado "" alrededor del directorio nombres de carpetas

No hubo suerte

Adición:

echo exec($command)  // echos < .... why?

O

exec($command, $output);
print_r($output);        // Array()

Incluso cambié el permiso en el archivo a control total para todos los usuarios. Si llamo al programa desde command prompt, puedo ver el icono que aparece junto al reloj durante un segundo.

Pero la misma llamada de php ni siquiera llamar al programa.

Editar

Incluso exec('notepad.exe'); no está funcionando. Algo tiene que hacerse con php configuraciones tal vez?

Author: jww, 2013-07-29

2 answers

Ya dije que era nuevo en la función exec(). Después de hacer un poco más de investigación, me encontré con 2>&1 que necesita ser añadido al final del comando en exec().

Gracias @mattosmat por señalarlo en los comentarios también. No probé esto a la vez porque dijiste que es un comando de Linux, estoy en Windows.

Así que, lo que he descubierto, el comando se está ejecutando en realidad en el back-end. Es por eso que no podía verlo realmente funcionando, lo que esperaba que sucediera.

Para todos ustedes, que tenían un problema similar, mi consejo es usar ese comando. Señalará todos los errores y también le dirá información/detalles sobre la ejecución.

exec('some_command 2>&1', $output);
print_r($output);  // to see the response to your command

Gracias por toda la ayuda chicos, lo aprecio;)

 74
Author: Brian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-09 23:54:30

También puede intentar dar la ruta completa al binario que está tratando de ejecutar. Eso resolvió mi problema al intentar usar ImageMagick.

 0
Author: craned,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-29 15:49:51