Creando ejecutables en PHP

calendario07/07/2004 reloj21:14 calendarioCategorías: PHP ComentarComentar

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.

Comentarios