entorno de ejecución
antes de ejecutar php desde la línea de comandos, es necesario conocer su entorno de ejecución:
php --ini
Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File: /etc/php5/cli/php.ini
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed: /etc/php5/cli/conf.d/05-opcache.ini,
/etc/php5/cli/conf.d/10-pdo.ini,
/etc/php5/cli/conf.d/20-gd.ini,
/etc/php5/cli/conf.d/20-json.ini,
/etc/php5/cli/conf.d/20-mcrypt.ini,
/etc/php5/cli/conf.d/20-mysql.ini,
/etc/php5/cli/conf.d/20-mysqli.ini,
/etc/php5/cli/conf.d/20-pdo_mysql.ini,
/etc/php5/cli/conf.d/20-readline.ini,
/etc/php5/cli/conf.d/20-tidy.ini
ejecución de php
la opción -c permite usar un archivo de configuración distinto al que se declara en php.ini (Configuration File Path):
php -c /etc/php5/apache2/php.ini
y la opción -f ejecuta el código php del archivo indicado:
php -f /media/web/ejemplo.php
de esta manera,
php -c /etc/php5/apache2/php.ini -f /media/web/ejemplo.php
php ejecuta el archivo ejemplo.php con la configuración de /etc/php5/apache2/php.ini. luego, si se quieren emplear los archivos adicionales de otro directorio (Scan for additional .ini files), hay que tener en cuenta que
The directories searched are set by a compile time option and, optionally, by an environment variable at run time: more information can be found in the installation guide.
esto es,
- durante la compilación de php, debe aplicarse la opción:
--with-config-file-scan-dir=/etc/php5/apache2/conf.d
- durante la ejecución, es necesario definir la variable de entorno PHP_INI_SCAN_DIR:
In PHP 5.2.0 and later, the scan directory can then be overridden at run time by setting the PHP_INI_SCAN_DIR environment variable.
para ello,
- en la línea de comandos, antes de ejecutar php, se exporta la variable en cuestión:
export PHP_INI_SCAN_DIR=/etc/php5/apache2/conf.d
de esta manera, el cambio se mantendrá en el entorno mientras dure la sesión de bash.
- dentro del propio código php,
putenv("PHP_INI_SCAN_DIR=/etc/php5/apache2/conf.d");
en este caso, el cambio sólo se mantendrá durante el tiempo de ejecución.
- en la línea de comandos, antes de ejecutar php, se exporta la variable en cuestión:
módulos de php
si se echa en falta algún módulo en el entorno de ejecución, hay que habilitarlo:
sudo php5enmod imagick
hecho esto, el archivo 20-imagick.ini debería encontrarse entre las configuraciones de /etc/php5/cli/conf.d:
ls /etc/php5/cli/conf.d
05-opcache.ini 20-gd.ini 20-json.ini 20-mysqli.ini 20-pdo_mysql.ini 20-tidy.ini
10-pdo.ini 20-imagick.ini 20-mcrypt.ini 20-mysql.ini 20-readline.ini
y el módulo imagick entre los módulos de php:
php -m
[…]
hash
iconv
imagick
json
libxml
[…]