2012-06-26 39 views
5

¿Cómo ejecuto correctamente los comandos en la línea de comando usando php? Por ejemplo, yo estoy usando el siguiente comando en la línea de comandos para convertir un archivo docx en un archivo PDF:Usando PHP para ejecutar comandos cmd

pdfcreator.exe /PF"D:\Documents\sample.docx 

Ahora, utilizando el código PHP que quiero ser capaz de ejecutar el mismo comando pero nada parece estar sucediendo :

<?php 
shell_exec('pdfcreator.exe /PF"D:\Documents\sample.docx"'); 
?> 

¿Es esto posible en PHP? En caso afirmativo, ¿cómo lo hago?

+0

### Actualización ¿Recibes algún error en tus registros? ¿Qué sucede si ajusta esa llamada 'shell_exec' en' var_export'? ### Original ¿Has probado 'system()' en su lugar? Aquí está la documentación: http://www.php.net/manual/en/function.system.php. –

+0

He intentado el sistema y todas las otras funciones para ejecutar comandos en el sistema (exec, shell_exec, system, pcntl_exec, passthru) –

+0

No soy el que votó negativamente, su respuesta es muy apreciada. –

Respuesta

8
system("c:\\path\\to\\pdfcreator.exe /PF\"D:\\Documents\\sample.docx""); 

prueba esto.

+0

¿Debo seguir incluyendo la ruta al archivo ejecutable si ya lo incluí en las variables de entorno? –

+0

No estoy seguro, pero la seguridad es pasar todo el camino. –

+0

Aparece un error de sintaxis, así que lo cambié a algo así basado en el código que proporcionó: system ('C: \\ Archivos de programa \\ PDFCreator \\ pdfcreator.exe/PF \ "D: \\ Documents \\ sample.docx "'); pero todavía no hubo suerte. –

4

No olvides escapar de tu comando con escapeshellcmd(). Esto evitará que tengas que usar barras invertidas feas y personajes de escape.

También existen otras alternativas que podrían servir:

`command` // back ticks drop you out of PHP mode into shell 
exec('command', $output); // exec will allow you to capture the return of a command as reference 
shell_exec('command'); // will return the output to a variable 
system(); //as seen above. 

También, asegúrese de que su .exe se incluye dentro de la variable $ PATH. Si no, incluya la ruta completa del comando.

+0

Probé el código a continuación en función de su respuesta, pero todavía no funciona. ¿Me equivoqué en algo:

+0

Cuando ejecuta el script desde CLI, ¿produce algo? Pruebe algo como: '$ command = escapeshellcmd ('pdfcreator.exe /PF"D:\Documents\sample.docx"> C: \ archivo de salida'); '. ¿Se escribe algo en C: \ archivo de salida? –

Cuestiones relacionadas