Hay algunas maneras de localizar php.ini archivo por línea de comandos en Linux Ubuntu, Linux Mint y otras distribuciones de Linux. Algunas de las opciones que se muestran aquí también son compatibles con Windows, especialmente usin WSL.

¿Qué es php.ini

El archivo php.ini es el archivo de configuración que se lee cuando se inicia PHP. Para las versiones del módulo de servidor de PHP, esto sucede solo una vez cuando se inicia el servidor web. Para las versiones CGI y CLI, sucede en cada invocación.

Es el lugar principal donde declaras cambios en tu configuración de PHP. El servidor ya está configurado con la configuración estándar para PHP, que su sitio o aplicación usará de forma predeterminada. A menos que necesite cambiar una o más configuraciones, no es necesario crear o modificar un archivo php.ini.

¿Dónde se encuentra el archivo php.ini por defecto

El archivo php.ini se busca en estas ubicaciones (en orden):

  • Ubicación específica del módulo SAPI (directiva PHPIniDir en Apache 2, opción de línea de comandos -c en CGI y CLI)

  • La variable de entorno PHPRC.

  • La ubicación del archivo php.ini se puede establecer para diferentes versiones de PHP. La raíz de las claves de registro depende de 32 o 64 bits del sistema operativo instalado y PHP. Para PHP de 32 bits en un sistema operativo de 32 bits o un PHP de 64 bits en un sistema operativo de 64 bits, use [(HKEY_LOCAL_MACHINE\SOFTWARE\PHP] para la versión de 32 bits de PHP en un sistema operativo de 64 bits, use [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]] en su lugar. Para la misma instalación de bitness se examinan las siguientes claves de registro en orden: [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z], [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y] y [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x], donde x, y y z significan las versiones principales, secundarias y de lanzamiento de PHP. Para las versiones de 32 bits de PHP en un sistema operativo de 64 bits, las siguientes claves de registro se examinan en orden: [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y.z], [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y] y [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x], donde x, y y z significan las versiones principales, secundarias y de lanzamiento de PHP. Si hay un valor para IniFilePath en cualquiera de estas claves, el primero encontrado se usará como la ubicación del php.ini (solo Windows).

  • [HKEY_LOCAL_MACHINE\SOFTWARE\PHP] o [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP], valor de IniFilePath (sólo Windows).

  • Directorio de trabajo actual (excepto CLI).

  • El directorio del servidor web (para módulos SAPI), o directorio de PHP (de lo contrario en Windows).

  • Directorio de Windows (C:\windows o C:\winnt) (para Windows), o –with-config-file-path opción de tiempo de compilación.

Si php-SAPI.ini existe (donde SAPI es el SAPI en uso, así, por ejemplo, php-cli.ini o php-apache.ini), se usa en lugar de php.ini. El nombre SAPI se puede determinar con php_sapi_name() (devuelve el tipo de interfaz entre el servidor web y PHP).

¿Cómo puedo encontrar el archivo php.ini desde la línea de comandos?

php ini

Hay una opción simple llamada --ini que puede usar cuando ejecuta el comando php:

php --ini

La salida mostrará dónde está el php.ini utilizado por la línea de comandos, así como archivos de configuración escaneados adicionales:

Configuration File (php.ini) Path: /etc/php/7.4/cli
Loaded Configuration File:         /etc/php/7.4/cli/php.ini
Scan for additional .ini files in: /etc/php/7.4/cli/conf.d
Additional .ini files parsed:      /etc/php/7.4/cli/conf.d/10-mysqlnd.ini,
/etc/php/7.4/cli/conf.d/10-pdo.ini,
/etc/php/7.4/cli/conf.d/15-xml.ini,
/etc/php/7.4/cli/conf.d/20-bcmath.ini,
/etc/php/7.4/cli/conf.d/20-exif.ini,
/etc/php/7.4/cli/conf.d/20-gd.ini,
/etc/php/7.4/cli/conf.d/20-gettext.ini,
/etc/php/7.4/cli/conf.d/20-iconv.ini,
/etc/php/7.4/cli/conf.d/20-intl.ini,
/etc/php/7.4/cli/conf.d/20-json.ini,
/etc/php/7.4/cli/conf.d/20-mbstring.ini,
/etc/php/7.4/cli/conf.d/20-mysqli.ini,
/etc/php/7.4/cli/conf.d/20-pdo_mysql.ini,
/etc/php/7.4/cli/conf.d/20-pdo_pgsql.ini,
/etc/php/7.4/cli/conf.d/20-pdo_sqlite.ini,
/etc/php/7.4/cli/conf.d/20-pgsql.ini,
/etc/php/7.4/cli/conf.d/20-redis.ini,
/etc/php/7.4/cli/conf.d/20-simplexml.ini,
/etc/php/7.4/cli/conf.d/20-sockets.ini,
/etc/php/7.4/cli/conf.d/20-sqlite3.ini,
/etc/php/7.4/cli/conf.d/20-xmlreader.ini,
/etc/php/7.4/cli/conf.d/20-xmlwriter.ini,
/etc/php/7.4/cli/conf.d/20-xsl.ini,
/etc/php/7.4/cli/conf.d/20-zip.ini,
/etc/php/7.4/cli/conf.d/xdebug.ini

php-config ini-dir

Usando php-config puede listar solo la ruta donde se encuentra el archivo de configuración principal de PHP:

php-config --ini-dir

El resultado es algo así como:

/etc/php/7.4/cli/conf.d

php -i y grep

El comando php -i muestra un resultado phpinfo() completo. Puede encontrar todas las configuraciones y aplicar el comando grep para filtrar solo el archivo de configuración .ini:

php -i | grep 'Configuration File'

O en Windows puede usar find en su lugar:

php -i | find/i"configuration file"

El resultado de ambos comandos será similar a:

Configuration File (php.ini) Path => /etc/php/7.4/cli
Loaded Configuration File => /etc/php/7.4/cli/php.ini

Finalmente puedes usar grep para filtrar todas las líneas del phpinfo() que muestra .ini:

php -i | grep "\.ini"

La salida será similar al comando php -i :

Configuration File (php.ini) Path: /etc/php/7.4/cli
Loaded Configuration File:         /etc/php/7.4/cli/php.ini
Scan for additional .ini files in: /etc/php/7.4/cli/conf.d
Additional .ini files parsed:      /etc/php/7.4/cli/conf.d/10-mysqlnd.ini,
/etc/php/7.4/cli/conf.d/10-pdo.ini,
/etc/php/7.4/cli/conf.d/15-xml.ini,
/etc/php/7.4/cli/conf.d/20-bcmath.ini,
/etc/php/7.4/cli/conf.d/20-exif.ini,
/etc/php/7.4/cli/conf.d/20-gd.ini,
/etc/php/7.4/cli/conf.d/20-gettext.ini,
/etc/php/7.4/cli/conf.d/20-iconv.ini,
/etc/php/7.4/cli/conf.d/20-intl.ini,
/etc/php/7.4/cli/conf.d/20-json.ini,
/etc/php/7.4/cli/conf.d/20-mbstring.ini,
/etc/php/7.4/cli/conf.d/20-mysqli.ini,
/etc/php/7.4/cli/conf.d/20-pdo_mysql.ini,
/etc/php/7.4/cli/conf.d/20-pdo_pgsql.ini,
/etc/php/7.4/cli/conf.d/20-pdo_sqlite.ini,
/etc/php/7.4/cli/conf.d/20-pgsql.ini,
/etc/php/7.4/cli/conf.d/20-redis.ini,
/etc/php/7.4/cli/conf.d/20-simplexml.ini,
/etc/php/7.4/cli/conf.d/20-sockets.ini,
/etc/php/7.4/cli/conf.d/20-sqlite3.ini,
/etc/php/7.4/cli/conf.d/20-xmlreader.ini,
/etc/php/7.4/cli/conf.d/20-xmlwriter.ini,
/etc/php/7.4/cli/conf.d/20-xsl.ini,
/etc/php/7.4/cli/conf.d/20-zip.ini,
/etc/php/7.4/cli/conf.d/xdebug.ini

Conclusiones

Hay varias formas de encontrar archivos php.ini y otros archivos de configuración de su instalación PHP utilizando comandos nativos en la terminal.