2 файла php.ini

Я обнаружил, что:

Когда я печатаю на терминале следующее:

php -i | grep php.ini

Я получаю вывод:

Загруженный файл конфигурации: @/etc/php5/cli/php.ini

Однако, из phpinfo(), я вижу:

Загруженный файл ini: @/etc/php5/apache2/php.ini

Какой из них работает прямо сейчас? Как возможно иметь два php.ini файла?

Ответ 1

Зависит от того, откуда вы работаете PHP. Если вы запустите его из командной строки, он использует cli/php.ini и apache2/php.ini при запуске через apache.

Вы выполняете phpinfo() через браузер, поэтому вы получаете /etc/php5/apache2/php.ini в качестве ответа. Выполнение php -r "phpinfo();" | grep "Loaded Configuration" с терминала должно выводить CLI ini. Такая же функция, изменения контекста.

Преимущество этой системы, очевидно, заключается в том, чтобы допускать различные конфигурации в зависимости от контекста. Для упрощенного примера вы можете захотеть включить safe_mode в apache, но это не нужно в режиме CLI.

Ваши пути .ini на самом деле довольно необычны. Обычно значение по умолчанию .ini равно php.ini, а CLI.ini называется php-cli.ini и они находятся в одной папке.

Я не эксперт по этому вопросу, но это должна быть основная идея. Если у кого есть какие-либо исправления, я буду рад их услышать.