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?
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;)
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
.
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