Amigo, ¿dónde está mi php.ini?

Hace unos años instalé Apache 2.2x y PHP 5.3.1 en un servidor Linux que mantengo. Usé .tar.gz y los construí según las instrucciones (en lugar de rpms y lo que tienes). Y todo estaba bien.

Hoy necesito instalar esto que parece una biblioteca PHP. Revisé todos los pasos para hacer la instalación, y encuentro ibm_db2.so en $PHP_HOME/lib/extensions/somecomplicatedname/ibm_db2.so

Lo mejor es que el último paso es configurar php.ini pero NO hay php.ini en mi sistema. Horror de los horrores. PHP funciona bien, excepto, por supuesto, para esta novedosa cosmogonía ibm_db2 que quiero usar para que alguien pueda usar una GUI para jugar con DB2 . (Intenté una pequeña secuencia de comandos php que falla e indica que las funciones ibm_db2 no están disponibles).

Tengo que lidiar con PHP una vez cada tantos años, así que por favor ilumíname en un nivel muy básico sobre lo que podría hacer para habilitar el acceso de la GUI basada en web a DB2 .

Solutions Collecting From Web of "Amigo, ¿dónde está mi php.ini?"

La mejor forma 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:

  1. Es probable que la respuesta previamente aceptada sea más rápida y conveniente para usted, pero no siempre es correcta. Ver comentarios sobre esa respuesta.
  2. 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 .

En la línea de comando ejecuta:

 php --ini 

Obtendrás 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, eche un vistazo al primero. Ese es el camino, donde PHP busca el php.ini .

Puede grep la misma información utilizando phpinfo() en un script y llamarlo con un navegador. Se menciona en el primer bloque de la salida. php -i hace lo mismo para la línea de comando, pero es bastante incómodo.

Esto funciona para mí:

 php -i | grep 'php.ini' 

Deberías ver algo como:

 Loaded Configuration File => /usr/local/lib/php.ini 

En el tipo de ventana de comando

 php --ini 

Le 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, usa esto

 echo phpinfo(); 

Este comando debería ayudarte a encontrarlo

 php -r "phpinfo();" | grep php.ini 
 phpinfo(); 

le dirá su ubicación, o desde la línea de comando

 php -i 

Utilice 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 intenta esto de otra manera

[root@AnyDirectory ~]# php --ini
muestra el resultado del camino

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:

Simplemente agregue lo siguiente en un archivo php y ábralo en su navegador

 print php_ini_loaded_file(); print_r(php_ini_scanned_files()); 

CLI:

Copiar y pegar en tu terminal:

 php -r 'print php_ini_loaded_file(); print_r(php_ini_scanned_files());' 
 find / -name php.ini 

Oye … ¡funcionó para mí!

Puede obtener más información sobre sus 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 

Para SAPI: php-fpm

No es necesario crear un archivo php.info (no es una buena política dejarlo para que el mundo lo lea de todos modos). 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/

Hay varias formas válidas ya mencionadas para localizar el archivo php.ini, pero si encontraste esta página porque quieres hacer algo con ella en un script bash:

path_php_ini="$(php -i | grep 'Configuration File (php.ini) Path' | grep -oP '(?< =\=\>\s).*')" echo ${path_php_ini}