Author Topic: Ejecución de archivos de extensión .bat en php  (Read 6173 times)

wiserlander

  • Newbie
  • *
  • Posts: 3
  • Karma: 0
    • View Profile
    • Desarrollos personales electrónicos + informáticos + programaciónes + microcontroladores + lo que haga falta =D
Ejecución de archivos de extensión .bat en php
« on: Enero 14, 2013, 05:09:22 am »
Hola!

Intento ejecutar archivos .bat desde una pagina web en PhP y en dos servidores hago las pruebas, uno en  localhost y otro remoto pero en la misma red Lan.

Estoy usando windows-7 de 64bit.
Zend comunity edition:
Apache 2.2.22 para 32bit.
PhP 5.3.14.
MySql 5.1.50.

En otra maquina, windows-7 de 64bit.
Xampp 1.8.0:
Apache 2.4.2
MySQL 5.5.25a
PHP 5.4.4

En el archivo php.ini modifique dos directivas de la siguiente manera en los dos servidores.
Code: [Select]
safe_mode= off
safe_mode_exec_dir= on

Modifique el servicio de Apache para que pudiera interactuar con el escritorio desde las propiedades de dicho servicio.

Código php para ejecutar el .bat
Code: [Select]
<?php
//esto ejecuta el .bat

    
$ejem="ejemplo.bat";
    
$llamada $ejem;
      
pclose(popen('start /b'.($llamada).'''r'));

//Y el siguiente código javascript hace la redireccion que viene después de la ejecución
?>

<script language="JavaScript">
window.self.location="http://localhost/index.php ";
</script>


También probé a quitarle /b para que no se ejecutara en segundo plano, pero asi ni siquiera aparece como proceso activo y el servidor php se bloquea hasta que mato un proceso que se crea cada vez, llamado php-cgi.exe *32. Tengo que aclarar que al iniciar el servidor se crean dos procesos con ese mismo nombre pero esos no los mato en ningún caso por que el servidor web dejaría de funcionar. =)

Y el archivo ejemplo.bat tiene lo siguiente:
Code: [Select]
@echo off
color 03
tasklist|find /i "miprograma.exe"
if %errorlevel%==0 GOTO:EOF
if %errorlevel%==1 START /b c:\una_carpeta\miprograma.exe
GOTO:EOF

Si ejecuto el ejemplo.bat directamente funciona perfectamente ademas esto me funcionaba perfectamente en versiones anteriores de PhP 5.3.0 y en Xampp, pero según estuve leyendo a partir de la versión de PhP 5.3.0 las directivas que modifique en php.ini de Zend son obsoletas y en PhP 5.4.0 en adelante ¿ya no existen?.

El siguiente código me funciono en xampp 1.8.0 con PhP 5.4.4 pero por lo visto funciona por que está en la carpeta de windows, en cualquier caso tengo que declarar una variable de entorno o sistema para la carpeta donde se encuentre el programa a ejecutar, entonces si quisiera ejecutar un nuevo programa tendría que estar configurando una nueva variable cada vez o colocando el nuevo programa en una carpeta que ya este registrada... en caso contrario no se ejecuta el programa o lo hace de mala manera pidiendo confirmaciones locales del servidor para poder ejecutarse gracias a la seguridad añadida en windows 7 por su padre y creador... =(  por otro lado en Zend C.E. directamente no funciona, el código es el siguiente.

Code: [Select]
$response = shell_exec('C:\\WINDOWS\\System32\\calc.exe -args');
echo $response;

Que conste que he buscado en los foros de Zend pero no encuentro nada útil de momento! Y mas de lo mismo en PhP.net y Google.

¿Alguien sabe algún código para posibilitar la ejecución de un .bat con las versiones mas actuales de PHP sin complicarse demasiado la vida?

El tema seguridad es importante, por supuesto! pero es mas importante que funcione la ejecución de un .bat o .exe en un principio.

Por si pudiera interesar la finalidad del asunto  es llegar a controlar la ejecución de salidas digitales de una interfaz USB por medio de una web en PhP pudiendo controlar motores, válvulas, luces y relativos a domótica, pero se me complica el asunto con las ultimas versiones de PhP y mas aun en Zend C.E.

¿ Alguna idea ?

Saludos
Hace mas el que quiere que el que puede!

wiserlander

  • Newbie
  • *
  • Posts: 3
  • Karma: 0
    • View Profile
    • Desarrollos personales electrónicos + informáticos + programaciónes + microcontroladores + lo que haga falta =D
Re: Ejecución de archivos de extensión .bat en php
« Reply #1 on: Enero 14, 2013, 09:27:24 am »
Seguramente ¿lo mejor sea instalar un linux y acabar con los problemas? :-\
Hace mas el que quiere que el que puede!

 

ey