PHP - Ejecutar un bat de forma local.

 
Vista:
Imágen de perfil de Gwill

Ejecutar un bat de forma local.

Publicado por Gwill (4 intervenciones) el 09/01/2018 12:21:25
Estoy intentando ejecutar un bat, que a su vez carga un script de powershell. El script básicamente imprime todos los pdf que hay en una carpeta, luego espera 30sec, mueve los pdf a otra carpeta y mata el proceso del Adobe que se cargó para la impresión. Si cargo el php desde consola, todo va perfecto, pero el problema es que cuando carbo ese mismo php desde el chrome solo se limita a moverme los archivos de lugar. No hace ninguna de las otras acciones, entiendo que debe de ser un problema de permisos, ya que lo que tengo dentro de las carpetas de mi servidor "wamp" lo hace sin problema, pero imprimir y matar el proceso no.
Alguno se le ocurre de que manera puedo hacer que el apache de Wamp tenga acceso fuera de sus dominios?
O si a alguno se le ocurre que el problema pudiera ser otro soy todo ojos, muchas gracias de antemano, saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 604
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Ejecutar un bat de forma local.

Publicado por Miguel (218 intervenciones) el 09/01/2018 18:46:23
Intenta con:

1
system('cmd.exe /c C:\folder\file.bat');
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Gwill

Ejecutar un bat de forma local.

Publicado por Gwill (4 intervenciones) el 10/01/2018 10:34:11
Gracias Miguel, ese código me hace exactamente lo mismo que los otros que he probado. Desde consola yo cargo php loquesea.php y me lo hace sin problema. Ahora mismo estoy cargando un script de Powershell, no un bat, así:
('%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -command C:\wamp64\www\pdf\pdf.ps1')
Mi script hace esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$fileDirectory = "C:\wamp64\www\pdf\p1";
foreach($file in Get-ChildItem $fileDirectory)
{
    $filePath = $fileDirectory + "\" + $file;
    Start-Process –FilePath $filePath –Verb Print -WindowStyle Minimized -PassThru
 }
Start-Sleep -s 30
Move-Item C:\wamp64\www\pdf\p1\*.* C:\wamp64\www\pdf\p2
Get-Process AcroRd32 | % { $_.CloseMainWindow() }$fileDirectory = "C:\wamp64\www\pdf\p1";
foreach($file in Get-ChildItem $fileDirectory)
{
    $filePath = $fileDirectory + "\" + $file;
    Start-Process –FilePath $filePath –Verb Print -WindowStyle Minimized -PassThru
 }
Start-Sleep -s 30
Move-Item C:\wamp64\www\pdf\p1\*.* C:\wamp64\www\pdf\p2
Get-Process AcroRd32 | % { $_.CloseMainWindow() }

Que básicamente es, mirar lo que hay en la carpeta de los pdf, imprimirlos, esperarse 30 sec, moverlos a otra carpeta y cerrar el acrobat que queda abierto tras la impresión. De estas acciones si yo cargo mi php desde consola me las hace todas perfectamente. Si yo intento cargar ese php desde el navegador, usando wamp como servidor, solo hace dos cosas, esperarse los 30sec y mover los archivos, las otras dos acciones no las hace.
Entiendo que debe de ser algún problema de permisos, pero no encuentro el camino la verdad.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 604
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Ejecutar un bat de forma local.

Publicado por Miguel (218 intervenciones) el 10/01/2018 13:10:37
Hola,
Si, puede ser el tema de los permisos pero no se me ocurre cómo podría solucionarse. Una cosa, ¿no estará afectando el tiempo máximo de ejecución de PHP (lo digo porque veo que la ejecución del PowerShell puede tardar y tiene una pausa de 30 segundos)?

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Gwill

Ejecutar un bat de forma local.

Publicado por Gwill (4 intervenciones) el 10/01/2018 13:28:51
Gracias por contestar tan rápido Miguel, la verdad es que dudo mucho que sea el tiempo de ejecución. Si yo me espero, el php a los 30 sec mueve los archivos de carpeta sin ningún problema, pero el resto de acciones no me las hace. Ahora estaba probando a ejecutar el php con "RunAs" pero al pedirme siempre la contraseña no creo que me sirva.
Lo pero de todo es que el php funciona perfectamente si lo cargo desde la consola, el problema es solamente cuando lo cargo desde el navegador usando el wamp.
Saludos!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar