¿Dónde puedo encontrar php.ini?

881

Hace unos años instalé Apache 2.2x y PHP 5.3.1 en un servidor Linux que mantengo. Usé .tar.gz's y los construí según las instrucciones (en lugar de rpms y what-have-you). Y todo estuvo 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

El gran problema 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 cosa ibm_db2 que quiero usar para que alguien pueda usar una GUI para jugar DB2. (Probé un pequeño script 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 a la GUI basada en la web DB2.

nigromante
fuente
120
El 90% del tiempo es /etc/php5/apache2/php.ini
Adam
Consulte también stackoverflow.com/q/2750580/632951
Pacerier el
66
Votación negativa porque la premisa de la pregunta es incorrecta. "NO hay php.ini en mi sistema" No, simplemente no pudo localizarlo. Hablando de eso, locate php.inile dirá en pocos momentos dónde está el archivo en su sistema.
Carreras de ligereza en órbita el
1
@ Adam: a menos que no sea PHP5;)
Línea
2
@line, sí, mi comentario ya no es demasiado relevante, ¡aunque no me di cuenta de la cantidad de votos a favor!
Adam

Respuestas:

466

La mejor manera de encontrar esto es: crear un archivo php y agregar el siguiente código:

<?php phpinfo(); ?>

y ábralo en el navegador, ¡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 más 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(); ?>mencionada en esta respuesta .
Tejas
fuente
11
Esta debería ser la respuesta aceptada. Si tiene la CLI instalada y tiene apache ejecutándose, entonces puede tener su propio archivo ini (como lo hace mi sistema). El uso de la respuesta aceptada devuelve lo que está usando la CLI en lugar de lo que usa Apache.
Dan
2
@ Dan Sí, tienes razón. Estoy cambiando la respuesta aceptada a esta porque el problema que mencionas también se encontró con alguien en la práctica (que comentó sobre la respuesta previamente aceptada). (Por cierto, si hubieras comentado la pregunta, habría solucionado este problema antes.)
nigromante
2
Esto no funciona en mi instalación. ¿Error de tipografía? Debería ser<?php phpinfo(); ?>
svenyonson
99
php -r \@phpinfo\(\)\;funciona para mí php -r \@phpinfo\(\)\; | grep 'PHP Version' -m 1para obtener información específica
jgraup 02 de
@zylstra Prueba:<?php echo php_ini_loaded_file(); ?>
Ates Goral
834

En la línea de comando ejecutar:

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

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

KingCrunch
fuente
55
aceptar la respuesta más antigua y anteriormente la más simple (SO me obliga a esperar un poco antes de aceptar). Gracias por la expansión que probablemente ayudará a la próxima persona que busque información. para mí, la segunda línea decía (ninguno), y todo funcionó bien después de poner un archivo php.ini en la ruta en la primera línea. ¡Gracias!
nigromante
12
Utilicé este comando y edité el archivo php.ini que también me dirigió y mi configuración de PHP no estaba cambiando y me di cuenta de que no me estaba dando el archivo php.ini correcto. Intenté usar la función phpinfo () PHP y me dio la ubicación correcta real del php.ini que necesitaba editar. Creo que esto es muy importante y espero que esto ayude a alguien.
thecommonthread
3
/etc/php5/apache2/php.ini
Adam
@thecommonthread Gracias por señalar el problema que encontró en la práctica. He cambiado la respuesta aceptada a una que resalta la creación de un .phparchivo. Por cierto, si comentas la pregunta, recibo una notificación y puedo solucionar el problema antes.
nigromante
55
@Pacerier Esto no tiene nada que ver con diferentes instalaciones de PHP, pero los diferentes SAPI pueden usar diferentes archivos ini. No uso el módulo apache, pero por lo que recuerdo creo que no hay forma de evitar un phpinfo.phparchivo similar. Con FPM al menos puedes usar php5-fpm -i | grep '\.ini'. Usualmente usas esto dos o tres veces y al final del día sabes dónde están los archivos;)
KingCrunch
133

Esto funciona para mi:

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
coderama
fuente
55
Esto sólo funciona, si no es una php.ini, que es exactamente el problema: Si no hay ninguno, todavía no sabe dónde mirar, o dónde colocar uno nuevo.
KingCrunch
Nunca me he encontrado con una situación en la que no haya un archivo php.ini.
coderama
Ejecutar este comando me da Configuration File (php.ini) Path => /usr/lib, pero correr <?php phpinfo(); ?>me da Loaded Configuration File: /etc/php.ini. Entonces, phpinfo()fue más confiable en mi caso.
Leo Galleguillos
2
Esto no es del todo correcto. Cada marco que usa el lenguaje PHP tiene su propio archivo php.ini. Si llama a esa línea desde la línea de comando, probablemente terminará recibiendo algo como /var/php5/cli/php.ini, que no es el archivo utilizado al ejecutar PHP en un entorno web. Para ese archivo, debe buscar en la carpeta apache2.
Andrea Moro
63

En la ventana de comandos, escriba

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 esto

echo phpinfo();
bibliophilsagar
fuente
33

Este comando debería ayudarte a encontrarlo

php -r "phpinfo();" | grep php.ini
Rimantas Jacikevicius
fuente
1
Esto me gusta mucho más que algunas de las otras respuestas. No requiere que cree, ubique un archivo php con esos contenidos y cargue la página en el navegador.
Andrew Allbright
29

Use los siguientes comandos para encontrar la php.iniruta del archivo 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 intente esto de otra manera

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

Sakthi Karthik
fuente
11
Esto es inferior a métodos como php -i | grep 'php.ini', porque encuentra cualquier php.ini y no le dice cuál usa su instalación de PHP. Además, puede dar resultados incorrectos cuando la base de locatedatos no está actualizada.
lxg
26
phpinfo();

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

php -i
Leniel Maccaferri
fuente
22

PHP viene con dos funciones nativas para mostrar qué archivo de configuración se carga:

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 su terminal:

php -r 'print php_ini_loaded_file(); print_r(php_ini_scanned_files());'
Creaforge
fuente
Respuesta poco apreciada, exhaustiva y (casi) correcta. Casi cambié esto a la respuesta correcta, pero me preocupa que php_ini_loaded_fileno siempre esté disponible.
nigromante
@zylstra, ¿cuál era tu versión de PHP? los documentos de php_ini_loaded_filesay php version> = 5.2.4
nigromante
@necromancer No estoy seguro ahora. Olvidé qué sistema estaba revisando. : /
zylstra
8
find / -name php.ini

¡Oye ... funcionó para mí!

Usuario_bandado
fuente
3
por un lado, lleva un tiempo; para dos, si tiene más de uno, ¿cómo sabe cuál es el que está realmente en uso?
nigromante
1
Es cierto, php --inifunciona, pero esta es solo otra opción :) Por lo general, hay una /etc/php5/cli/php.ini /etc/php5/apache2/php.ini /etc/php5/cgi/php.iniy, por lo general, cuál desea es bastante obvio. (cli, apache, cgi)
Banned_User
Esta no es una buena solución, porque no estamos destinados a encontrar todo el archivo php.ini en el disco.
4

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
Mike Purcell
fuente
2

Prueba una de estas soluciones

  1. En su terminal escriba find / -name "php.ini"

  2. En su tipo de terminal php -i | grep php.ini. Debería mostrar la ruta del archivo comoConfiguration File (php.ini) Path => /etc

  3. Si puede acceder a uno de sus archivos php, ábralo en un editor (bloc de notas) e inserte el siguiente código después <?php en una nueva línea phpinfo();Esto le indicará la ubicación de php.ini
  4. También puedes hablar con php en modo interactivo. Simplemente escriba php -ala terminal y escriba phpinfo (); despues de php iniciado.
cherankrish
fuente
los puntos 1, 2 y 4 son vulnerables a múltiples problemas de instalación; Ya hay grandes respuestas. no es necesario agregar una respuesta que no agregue nada aquí.
nigromante
@necromancer explica tus problemas en detalle para que sea útil para alguien. Tenemos votos positivos y negativos para respuestas malas e inútiles y la comunidad decidirá.
Cherankrish
-1

Ya se han mencionado varias formas válidas para localizar el archivo php.ini, pero si se encontró con esta página porque desea 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}

Cragmonkey
fuente
1
vea esto en su lugar: stackoverflow.com/a/24342463/621338 en lugar de agotarlo, lo cual es frágil si el texto cambia, podría hacer que php imprima solo el nombre del archivo y lo use en un script bash sin cosas complicadas como las anteriores.
nigromante