Чувак, где мой 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 работает отлично, за исключением, конечно, для этой новомодной вещицы ibm_db2, которую я хочу использовать, чтобы кто-то мог использовать графический интерфейс для работы с DB2, (Я попробовал небольшой скрипт php, который не работает и указывает, что функции ibm_db2 недоступны).

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

15 ответов

Решение

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

<?php phpinfo(); ?>

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

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

  1. Ранее принятый ответ, вероятно, будет быстрее и удобнее для вас, но он не всегда корректен. Смотрите комментарии к этому ответу.
  2. Обратите также внимание на более удобную альтернативу <?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

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

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

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

php -i | grep 'php.ini'

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

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

ps чтобы получить только путь php.inin

php -i | grep /.+/php.ini -oE

В командной строке введите

php --ini

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

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

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

echo phpinfo();

Используйте следующие команды, чтобы найти 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 -r "phpinfo();" | grep 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());'
phpinfo();

скажет вам его местонахождение или из командной строки

php -i

Попробуйте одно из этого решения

  1. В вашем терминале типа find / -name "php.ini"

  2. В вашем терминале типа php -i | grep php.ini, Должен показать путь к файлу как Configuration File (php.ini) Path => /etc

  3. Если вы можете получить доступ к одному из ваших файлов php, откройте его в редакторе (блокнот) и вставьте ниже код после <?php в новой строке phpinfo(); Это скажет вам местоположение php.ini
  4. Вы также можете поговорить с php в интерактивном режиме. Просто введите php -a в терминале введите phpinfo(); после инициации php.

Запустите это в командной строке:

php -r "echo php_ini_loaded_file().PHP_EOL;"
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 7 , обычный файл php.ini был удален и добавлен с помощью и php.ini-devlopment.

поэтому вместо php.ini, которого в моем случае не существует (я установил php 8.1), используйте и он находится в папке установки php (что-то вроде: C:\PHP-8.1.5) и создайте файл и назовите его, а затем скопируйте содержимое php.ini-productionв этом новом php.ini.

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

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

Другие вопросы по тегам