info - Amigo, ¿dónde está mi php.ini?
ubicacion de php ini en centos 7 (12)
Hace unos años instalé Apache 2.2x y PHP 5.3.1 en un servidor Linux que mantengo. Utilicé .tar.gz y los construí según las instrucciones (en lugar de rpms y lo que tienes) Y todo estaba bien.
Hoy necesito instalar this que parece una biblioteca de PHP. Realicé todos los pasos para realizar la instalación, y encuentro ibm_db2.so en $PHP_HOME/lib/extensions/somecomplicatedname/ibm_db2.so
El gran problema es que el último paso es configurar php.ini, pero NO hay php.ini en mi sistema. El horror de los horrores. PHP funciona bien, excepto, por supuesto, para este nuevo dispositivo ibm_db2 que quiero usar para que alguien pueda usar una GUI para jugar con DB2
. (Intenté una pequeña secuencia de comandos de PHP que falla e indica que las funciones ibm_db2 no están disponibles).
Tengo que lidiar con PHP una vez cada pocos años, así que, por favor, ilumíneme a un nivel muy básico sobre lo que podría hacer para habilitar el acceso de GUI basado en web a DB2
.
En el tipo de ventana de comando
php --ini
Te mostrará el camino algo así como
Configuration File (php.ini) Path: /usr/local/lib
Loaded Configuration File: /usr/local/lib/php.ini
Si el comando anterior no funciona, use este
echo phpinfo();
En la línea de comandos ejecute:
php --ini
Obtendrá algo como:
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/curl.ini,
/etc/php5/cli/conf.d/pdo.ini,
/etc/php5/cli/conf.d/pdo_sqlite.ini,
/etc/php5/cli/conf.d/sqlite.ini,
/etc/php5/cli/conf.d/sqlite3.ini,
/etc/php5/cli/conf.d/xdebug.ini,
/etc/php5/cli/conf.d/xsl.ini
Eso es de mi máquina de desarrollo local. Sin embargo, la segunda línea es la interesante. Si no hay nada mencionado, mira el primero. Ese es el camino, donde PHP busca el php.ini
.
Puede obtener la misma información usando phpinfo()
en un script y llamarla con un navegador. Se menciona en el primer bloque de la salida. php -i
hace lo mismo para la línea de comandos, pero es bastante incómodo.
Este comando te ayudará a encontrarlo.
php -r "phpinfo();" | grep php.ini
Esto funciona para mí:
php -i | grep ''php.ini''
Deberías ver algo como:
Loaded Configuration File => /usr/local/lib/php.ini
ps Para obtener solo la ruta php.inin
php -i | grep /.+/php.ini -oE
Hay varias formas válidas ya mencionadas para localizar el archivo php.ini, pero si se encontró con esta página porque quiere hacer algo con ella en un script de bash:
path_php_ini="$(php -i | grep ''Configuration File (php.ini) Path'' | grep -oP ''(?<=/=/>/s).*'')" echo ${path_php_ini}
La mejor manera de encontrar esto es crear un archivo php y agregar el siguiente código:
<?php phpinfo(); ?>
y ábrelo en el navegador, se mostrará el archivo que realmente se está leyendo!
Actualizaciones por OP:
- Es probable que la answer aceptada anteriormente sea más rápida y conveniente para usted, pero no siempre es correcta. Ver comentarios sobre esa respuesta.
- Tenga en cuenta también la alternativa más conveniente
<?php echo php_ini_loaded_file(); ?>
<?php echo php_ini_loaded_file(); ?>
mencionado en esta respuesta .
PHP viene con dos funciones nativas para mostrar qué archivo de configuración está cargado:
- php_ini_loaded_file devuelve el archivo ini cargado
- php_ini_scanned_files devuelve una lista de archivos .ini analizados desde el directorio ini adicional
Dependiendo de su configuración, Apache y CLI pueden usar diferentes archivos ini. Aquí están las dos soluciones:
Apache
Solo agrega lo siguiente en un archivo php y ábrelo en tu navegador
print php_ini_loaded_file();
print_r(php_ini_scanned_files());
CLI:
Copia y pega en tu terminal:
php -r ''print php_ini_loaded_file(); print_r(php_ini_scanned_files());''
Para SAPI: php-fpm
No es necesario crear un archivo php.info (no es una buena política dejar que todo el mundo lo lea). En la línea de comando:
php-fpm -i | more
En algún lugar de su salida, mostrará esta línea:
Configuration File (php.ini) Path => /etc
Aquí hay una explicación más completa: https://www.cloudinsidr.com/content/how-to-figure-out-your-php-configuration-parameters-without-info-php/
Puedes obtener más información sobre tus archivos de configuración usando algo como:
$ -> php -i | ack config # Use fgrep -i if you don''t have ack
Configure Command => ''./configure'' ...
Loaded Configuration File => /path/to/php.ini
Use los siguientes comandos para encontrar la ruta del archivo php.ini
en linux.
[root@AnyDirectory ~]# locate php.ini
/etc/php.ini
/etc/php.ini.rpmnew
/usr/share/doc/php-common-5.4.45/php.ini-development
/usr/share/doc/php-common-5.4.45/php.ini-production
o prueba esto de otra manera
[root@AnyDirectory ~]# php --ini
muestra el resultado del camino
find / -name php.ini
Hey ... funcionó para mí!
phpinfo();
le dirá su ubicación, o desde la línea de comandos
php -i