Чувак, где мой php.ini?

Несколько лет назад я установил Apache 2.2x и PHP 5.3.1 на сервере Linux, который я поддерживаю. Я использовал .tar.gz и построил их в соответствии с инструкциями (вместо rpms и what-have-you). И все было хорошо.

Сегодня мне нужно установить это , похожее на библиотеку PHP. Я прошел все шаги до установки, и я нашел ibm_db2.so в $PHP_HOME/lib/extensions/somecomplicatedname/ibm_db2.so

Большой улов – последний шаг – настроить php.ini, но в моей системе нет php.ini. Ужас ужасов. PHP работает отлично, за исключением, конечно, для этого нового fangled ibm_db2 thingamagic, который я хочу использовать, чтобы кто-то мог использовать графический интерфейс, чтобы возиться с DB2 . (Я попробовал небольшой скрипт php, который не работает, и указывает, что функции ibm_db2 недоступны).

Мне приходится иметь дело с PHP один раз в несколько лет, поэтому, пожалуйста, просветите меня на очень базовом уровне о том, что я могу сделать, чтобы включить доступ к базе данных через веб-интерфейс.

Лучший способ найти это: создать файл php и добавить следующий код:

 <?php phpinfo(); ?> 

и откройте его в браузере, он покажет файл, который на самом деле читается!

Обновления по OP:

  1. Ранее принятый ответ скорее всего будет быстрее и удобнее для вас, но это не всегда правильно. См. Комментарии к этому ответу.
  2. Также обратите внимание на более удобную альтернативу <?php echo php_ini_loaded_file(); ?> <?php echo php_ini_loaded_file(); ?> упомянутые в этом ответе .

В командной строке выполните:

 php --ini 

Вы получите что-то вроде:

 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 

Это из моей локальной dev-машины. Однако вторая строка интересна. Если ничего не сказано, посмотрите на первый. Это путь, в котором PHP ищет php.ini .

Вы можете grep использовать ту же информацию, используя phpinfo() в скрипте, и вызывать ее с помощью браузера. Он упоминается в первом блоке вывода. php -i делает то же самое для командной строки, но довольно неудобно.

Это работает для меня:

 php -i | grep 'php.ini' 

Вы должны увидеть что-то вроде:

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

В окне командного окна

 php --ini 

Он покажет вам путь что-то вроде

 Configuration File (php.ini) Path: /usr/local/lib Loaded Configuration File: /usr/local/lib/php.ini 

Если вышеуказанная команда не работает, используйте эту

 echo phpinfo(); 

Эта команда должна помочь вам найти ее

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

сообщит вам свое местоположение или из командной строки

 php -i 

Используйте следующие команды, чтобы найти путь к файлу php.ini в 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 

или попробуй другим способом

[root@AnyDirectory ~]# php --ini
его показывает результат пути

PHP содержит две собственные функции для отображения загружаемого файла конфигурации:

  • php_ini_loaded_file возвращает загруженный ini-файл
  • php_ini_scanned_files возвращает список .ini-файлов, обработанных из дополнительного ini-dir

В зависимости от вашей установки Apache и CLI могут использовать разные ini-файлы. Вот два решения:

Apache:

Просто добавьте следующее в php-файл и откройте его в своем браузере.

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

CLI:

Скопируйте пасту в терминал:

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

Эй … это сработало для меня!

Вы можете получить больше информации о своих файлах конфигурации, используя что-то вроде:

 $ -> php -i | ack config # Use fgrep -i if you don't have ack Configure Command => './configure' ... Loaded Configuration File => /path/to/php.ini 

Для SAPI: php-fpm

Нет необходимости создавать файл php.info (это не хорошая политика, чтобы оставить его для чтения в любом случае). В командной строке:

 php-fpm -i | more 

Где-то в своем выпуске он покажет эту строку:

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

Вот более подробное объяснение: https://www.cloudinsidr.com/content/how-to-figure-out-your-php-configuration-parameters-without-info-php/

Существует несколько правильных способов определения файла php.ini, но если вы столкнулись с этой страницей, потому что вы хотите что-то сделать с ним в сценарии bash:

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