Creando ejecutables en PHP
Hace tiempo que llevaba queriendo escribir este tutorial, bueno, más que escribir, pasar a limpio, porque lo tenía en un *.txt esperando a ser publicado. Consiste básicamente en como crear un ejecutable programado en php, para poderlo abrir sin necesidad de navegador u otros.
Lo primero que hay que hacer si no se ha hecho al instalar PHP, es emerger php-cgi:
#emerge php-cgi
Y comprobamos que nos deja ejecutar archivos PHP, escribiendo (como usuario mismamente):
$php archivo.php
Esto está muy bien, pero necesitamos ejecutar un script mediante un programa, en lugar de crear una especie de programa que se ejecute «por sí mismo», para ello, lo primero que debemos de hacer, es dar permisos de ejecución al archivo:
#chmod +x archivo.php
Ya tenemos hecho el «ejecutable», pero ¿cómo tiene que estar programado dicho ejecutable?, en PHP simple y llanamente, lo único que debemos de introducir una cabecera al principio con el programa que ejecutará el script al ejecutarlo (valga la redundancia), es decir, que haga lo que hemos hecho antes el solo. Para ello lo primero debemos saber donde está el programa:
# whereis php
php: /usr/bin/php /etc/php /usr/lib/php /usr/include/php /usr/man/man1/php.1.gz /usr/share/man/man1/php.1.gz
Nos fijamos en la primera ruta, que es /usr/bin/php
, sabiendo esto, el archivo.php, debería ser de la siguiente forma:
#!/usr/bin/php -q
< ?
//todo el código PHP
?>
Y ya solo nos quedaría moverlo a una carpeta donde se guarden los ejecutables, para evitar escribir la ruta exacta todas las veces, para esto hacemos:
# echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin
, y lo movemos a cualquiera de esas rutas, con lo que para ejecutar el programa, sencillamente habría que escribir:
archivo.php
El ejemplo que voy a poner, sirve para calcular el tiempo que queda para que de comienzo la Campus Party 2004 (si da negativo es que ya ha empezado :D), y el código es este:
#!/usr/bin/php -q
< ?
$ahora = time();
$campus = mktime (12,0,0,7,26,2004);
$resta = $campus - $ahora;
$dias = floor($resta/(24*60*60));
$horas = floor(($resta - $dias*(24*60*60))/(60*60));
$minutos = floor(($resta - $dias*(24*60*60) - $horas*(60*60))/60);
$segundos = floor($resta - $dias*(24*60*60) - $horas*(60*60) - $minutos*60);
echo "Faltan $dias dias, $horas horas, $minutos minutos y $segundos segundos para
el gran momento... :)";
?>
Si es posible, dejad en los comentarios algún programa interesante que hayais hecho, para ver que al menos estas líneas han servido de algo.
Mola. Lástima que eso no valga en Windows :'(.
Mmm, tengo un colega que usa win, y que yo sepa lo está usando… ya le diré que se pase por aquí para que te diga 🙂
En windows es casi mas simple… con asocial los archivos .php en el sistema pa ke al abrir ejecuten php.exe -q ya daberia servir, aunke no l ohe probado, yo uso cygwin, ke tiene su bash y los ejecuta = … aunke tuve ke crear un symlink en /usr/bin/php hacia el php.exe real xD
Para GiGaHeRz
Hum, en WinXP no va. No sé si esporque no me deja pasar parámetros al programa que ejecuta el archivo. De todos modos ahora mismo no necesito autoejecutables para nada, cuando me vea en la necesidad probaré lo que dices del cygwin.
Gracias por responder.
Hola «PaToRoCo» esta muy bueno el
tutorial corto y directo al grano… Gracias…
Mi problema es el siguiente…
He realizado un software de una carnetizadora
en (PHP, MySQL) y me estan exigiendo que coloque todo todo el software en un ejecutable(*.exe) es decir, un icono que la persona lo tenga en el escritorio de su computador y con él pueda ingresar al programa sin más complicaciones. ¿Cómo puedo
hacer eso? Por Favor espero por su respuesta…
Gracias…
Buenas Kelvin. Pues que yo sepa, *.exes no puedes hacer. De todos maneras, pq no haces un acceso directo a la URL de la web y ya está? A fin de cuentas no olvidemos que estamos hablando de una aplicación Web…
Supongo que tengas que jugar con los permisos de usuarios, quitándole privilegios para que su usuario no pueda ver tus ficheros. Eso es a nivel de servidor, no tiene nada que ver con PHP…
Hola a todos. quiero hacer lo mismo que Kevin, poner un acceso directo me parece bien, pero si hablamos de que la maquina solo se conecta a internet una que otra vez, entonces el acceso directo no funciona… una posible solucion seria instarle el php y asi funcione de manera local.. pero el problema es que no estara actualizado tal cual se ve en el servidor…alguna idea que me puedan dar??.
muchas a todos !!!!!!
para encriptar el codigo php esta el php encoder
Buscalo como php Lockit
Hola necesito realizar un programa .exe de instalaciones electricas. Es posible realizarlas en php, o me recomiendan usar otro lenguaje??? teniendo tambien control de usuarios y contraseña?? Gracias!!!
ola estoy haciendo un programa para evaluar al personal de una empresa y necesito un ejecutable es posible crear dicho ejecutable en php??? contesta porfavor estoy en apuros
Muy buen ejemplo me fue de utilidad para disparar las facturas de cobro todos los días 1 de cada mes.
Hola, muchas gracias por la información compartida. Una pregunta, para que sirve el switch «-q» en: #!/usr/bin/php -q
Gracias..
Hola, gracias por el artículo! Cómo puedo usar PHP para hacer un programa? he descargado algún fichero PHP y solo contiene símbolos extraños dentro! no se si no habré descargado un virus web, o algo. quisiera hacer un programa, como el office