Existem algumas maneiras de localizar o arquivo php.ini por linha de comando no Linux Ubuntu, Linux Mint e outras distribuições Linux. Algumas das opções mostradas aqui também são compatíveis com o Windows, especialmente usnado WSL.

O que é php.ini

O php.ini é o arquivo de configuração que é lido quando o PHP é iniciado. Para as versões do módulo de servidor do PHP, isso acontece apenas uma vez quando o servidor da Web é iniciado. Para as versões CGI e CLI, isso acontece em cada invocação.

É o local principal em que você declara alterações nas configurações do PHP. O servidor já está configurado com configurações padrão para PHP, que seu site ou aplicativo usará por padrão.A menos que você precise alterar uma ou mais configurações, não há necessidade de criar ou modificar um arquivo php.ini.

onde está localizado por padrão o arquivo php.ini

O arquivo php.ini é pesquisado nesses locais (nesta ordem):

  • Localização específica do módulo SAPI (Diretiva Phpinidir na opção Apache 2, -C de linha de comando na CGI e CLI)

  • A variável de ambiente PHPRC.

  • A localização do arquivo php.ini pode ser definida para diferentes versões do PHP. A raiz das chaves do registro depende do sistema operacional de 32 ou 64 bits e php instalado.

    Para PHP de 32 bits em um sistema operacional de 32 bits ou um PHP de 64 bits em um sistema operacional de 64 bits [(HKEY_LOCAL_MACHINE\SOFTWARE\PHP] porém para uma versão de 32 bits do PHP em um uso operacional de 64 bits [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]].

    Para a mesma instalação de bits, as seguintes chaves de registro são examinadas nesta ordem: [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z], [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y] e [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x], onde x, y e z significam as versões maiores, menores e de liberação do PHP.

    Para versões de 32 bits de PHP em um sistema operacional de 64 bits, as seguintes chaves de registro são examinadas nesta ordem: [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y.z], [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y] e [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x], onde x, y e z significam as versões maiores, menores e de liberação do PHP.

    Se houver um valor para o IniFilePath em qualquer uma dessas chaves, a primeira encontrada será usada como localização do php.ini (somente Windows).

  • [HKEY_LOCAL_MACHINE\SOFTWARE\PHP] ou [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP], valor de IniFilePath (somente Windows).

  • Diretório de trabalho atual (exceto CLI).

  • O diretório do servidor web (para módulos SAPI), ou diretório do PHP (caso contrário no Windows).

  • Diretório do Windows (C:\windows ou C:\winnt) (para Windows), ou opção de tempo de compilação –with-config-file-path.

Se php-SAPI.ini existir (onde SAPI é o SAPI em uso, então, por exemplo, php-cli.ini ou php-apache.ini), ele é usado em vez de php.ini . O nome SAPI pode ser determinado com php_sapi_name() (retorna o tipo de interface entre servidor web e PHP).

Como posso encontrar o arquivo php.ini na linha de comando

php ini

Existe uma opção simples chamada --ini que você pode usar ao executar o comando php:

php --ini

A saída mostrará onde está o php.ini usado pela linha de comando, bem como os arquivos de condição adicionais escaneados:

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 você pode listar apenas o caminho onde o arquivo de configuração principal do PHP está localizado:

php-config --ini-dir

A saída é algo como:

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

php -i and grep

O comando php -i mostra um resultado phpinfo() completo. Você pode encontrar todas as configurações e aplicar o comando grep para filtrar apenas o arquivo de configuração .ini:

php -i | grep 'Configuration File'

Ou no Windows você pode usar find:

php -i | find/i"configuration file"

O resultado para ambos os comandos será semelhante a:

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

Finalmente você pode usar grep para filtrar todas as linhas do phpinfo() que mostra .ini:

php -i | grep "\.ini"

A saída será semelhante ao 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

Conclusões

Existem várias maneiras de encontrar o arquivo php.ini e outros arquivos de configuração de sua instalação do PHP usando comandos nativos no terminal.