Где мой файл php.ini находится на сервере?

732

Несколько лет назад я установил 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 один раз в несколько лет, поэтому, пожалуйста, просветите меня на очень базовом уровне о том, что я могу сделать, чтобы включить доступ к веб-интерфейсу GUI для DB2.

  • 105
    90% времени это /etc/php5/apache2/php.ini
  • 38
    @PierredeLESPINAY спасибо. кто-то отредактировал «Чувак» вскоре после того, как я впервые опубликовал его, но я рад, что восстановил его. это приятно отражает чувство, которое испытываешь, когда они впервые пытаются найти его, но не могут :)
Показать ещё 11 комментариев
Теги:
php-ini

12 ответов

395
Лучший ответ

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

<?php phpinfo(); ?>

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

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

  • Ранее принятый ответ скорее всего будет быстрее и удобнее для вас, но это не всегда правильно. См. Комментарии к этому ответу.
  • Также обратите внимание на более удобную альтернативу <?php echo php_ini_loaded_file(); ?>, указанную в этом ответе.
  • 9
    Это должен быть принятый ответ. Если у вас установлен CLI и запущен apache, то у него может быть свой собственный ini-файл (как это делает моя система). Использование принятого ответа возвращает то, что использует CLI, а не Apache.
  • 2
    @ Дан Да, ты прав. Я изменяю принятый ответ на этот, потому что проблема, о которой вы упоминаете, также встречалась на практике с кем-то (кто прокомментировал ранее принятый ответ). (Кстати, если бы вы прокомментировали вопрос, я бы исправил эту проблему раньше.)
Показать ещё 5 комментариев
692

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

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() в script и вызвать ее с помощью браузера. Он упоминается в первом блоке вывода. php -i делает то же самое для командной строки, но довольно неудобно.

  • 4
    принимать самый старый и ранее самый простой ответ (ТАК заставляет меня немного подождать, прежде чем принять). спасибо за расширение, которое, вероятно, поможет следующему человеку, ищущему информацию. для меня 2-я строка сказала (нет), и все работало нормально после помещения файла php.ini в путь в первой строке. Спасибо!
  • 12
    Я использовал эту команду и отредактировал файл php.ini, который мне тоже направлялся, и мои настройки PHP не изменились, и я понял, что он не дает мне правильный файл php.ini. Я попытался использовать PHP-функцию phpinfo (), и она дала мне точное местоположение php.ini, которое мне нужно было отредактировать. Я думаю, что это очень важно, и я надеюсь, что это кому-то поможет.
Показать ещё 7 комментариев
109

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

php -i | grep 'php.ini'

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

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

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

php -i | grep /.+/php.ini -oE
  • 5
    Это работает только, если есть php.ini , что именно проблема: Если нет ни одного, вы еще не знаете , где смотреть, или где разместить новый.
  • 0
    Я никогда не сталкивался с ситуацией, когда нет файла php.ini.
Показать ещё 2 комментария
57

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

php --ini

Он покажет вам путь, похожий на

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

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

echo phpinfo();
30

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

php -r "phpinfo();" | grep php.ini
  • 1
    Мне это нравится гораздо больше, чем некоторые другие ответы. Мне не нужно создавать, находить php-файл с этим содержимым и загружать страницу в браузере.
29

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

  • 9
    Это уступает методам вроде php -i | grep 'php.ini' , потому что он находит любой php.ini и не говорит вам, какой из них использует ваша установка PHP. Кроме того, это может дать неправильные результаты, если locate данных locate не обновлена.
22

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());'
  • 0
    php_ini_loaded_file не работает для меня.
  • 0
    Недооцененный, тщательный и (почти) правильный ответ. Я почти переключил это на правильный ответ, но я боюсь, что php_ini_loaded_file не всегда может быть доступен.
Показать ещё 2 комментария
22
phpinfo();

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

php -i
6
find / -name php.ini

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

  • 3
    для одного это занимает некоторое время; на двоих, если у вас их больше одного, откуда вы знаете, какой из них на самом деле используется?
  • 1
    Правда, php --ini работает, но это просто еще один вариант :) Обычно есть /etc/php5/cli/php.ini /etc/php5/apache2/php.ini /etc/php5/cgi/php.ini и обычно то, что вы хотите, довольно очевидно. (Cli, Apache, CGI)
Показать ещё 1 комментарий
4

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

$ -> php -i | ack config # Use fgrep -i if you don't have ack

Configure Command =>  './configure'  ...
Loaded Configuration File => /path/to/php.ini
3

Для 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/

-1

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

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

  • 1
    вместо этого посмотрите это: stackoverflow.com/a/24342463/621338 вместо того, чтобы вычистить его, что является хрупким, если текст изменяется, вы можете заставить php распечатать только имя файла и использовать его в скрипте bash без сложных вещей, как указано выше.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню