Delirios de un Informático

Code Igniter Reactor 2.0.0 y la línea de comandos

Una de las novedades de Code Igniter 2.0 es la incorporación de compatibilidad para su uso a través de la línea de comandos (antes había que recurrir a chapuzas). Se añade un intérprete que permite llamar a los métodos de los controladores a través de los parámetros de un script. Para eso, hay que definir el siguiente elemento en la configuración:

$config['uri_protocol'] = 'CLI';.

De este modo podremos realizar una llamada del tipo ./cli.php controlador parametro1 parametro2, lo que equivaldría a una dirección web como http://host/controlador/parametro1/parametro2. Mi recomendación es que el script ejecutado sea una copia del index.php en donde se añada la citada configuración (utilizando la nueva variable $assign_to_config), así como un #!/usr/bin/php -q en la primera línea para facilitar la ejecución directa.

Una vez dentro del código puede detectarse si la ejecución se realiza a través de línea de comandos simplemente determinando si se ha definido la constante STDIN, así como con la comprobación del elemento uri_protocol de la configuración de Code Igniter.

Por otro lado, puede ser necesario determinar quién está ejecutando el script para otorgar o no privilegios. Eso puede hacerse gracias a la variable superglobal $_ENV, en donde se define el elemento USERNAME. Por ejemplo, para comprobar si el script se ejecuta con privilegios de administrador (bien siendo root o mediante sudo) basta con el siguiente codigo:

$auth = (getenv('USERNAME') == 'root');