Archivos de Tags: CLI @es

Usar el php de MacPorts desde la línea de comandos

Hace un tiempo instalé Apache+MySQL usando MacPorts en Mac OS X. Todo iba bien siempre y cuando estuviera navegando por las páginas usando un navegador, pero en cuanto usé PHP mediante el CLI para ejecutar comandos de Symfony2 comenzaron los problemas. Me decía que no tenía configurada la zona horaria, y yo estaba seguro de haberla configurado en el fichero php.ini.

$ php app/console doctrine:schema:update --force
[ErrorException] Warning: date_default_timezone_get(): It is not safe to rely
on the system' s timezone settings. You are *required* to use the date.timezone
setting or the date_default_timezone_set() function. In case you used any of
those me thods and you are still getting this warning, you most likely misspelled
the timezone identifier. We selected 'Europe/Berlin' for 'CET/1.0/no DST' instead
in /Users/.../vendor/monolog/monolog/src/ Monolog/Logger.php line 199

Buscando una solución por internet me di cuenta de que el problema era que estaba ejecutando el php binario que viene con Mac OS X, y en ese no tenía configurada la zona horaria. Se puede ver de donde se lee el fichero php.ini ejecutando esto:

$ php -i | grep 'Configuration File'
Configuration File (php.ini) Path => /etc
Loaded Configuration File => (none)

La primera solución que se me ocurrió fue usar la ruta completa al php binario de MacPorts:

$ /opt/local/bin/php app/console doctrine:schema:update --force
$ /opt/local/bin/php -i | grep 'Configuration File'
Configuration File (php.ini) Path => /opt/local/etc/php5
Loaded Configuration File => /opt/local/etc/php5/php.ini

Una mejor solución consiste en añadir la ruta /opt/local/bin al path del sistema antes que la ruta /usr/bin. Esto se puede hacer editando el fichero ~/.bash_profile:

PATH=/opt/local/bin:$PATH;export PATH

Luego hay que cerrar y volver a abrir el terminal o recargar el ~/.bash_profile:

$ source ~/.bash_profile

Ref: Stackoverflow