Я обнаружил, что:
Когда я набираю на терминале следующее:
php -i | grep php.ini
Я получаю вывод:
Загруженный файл конфигурации: @ /etc/php5/cli/php.ini
Однако из phpinfo() я вижу:
Загруженный файл ini: @ /etc/php5/apache2/php.ini
Какой из них работает прямо сейчас? Как возможно иметь два файла php.ini ?
Зависит от того, откуда вы работаете PHP. Если вы запустите его из командной строки, он использует cli/php.ini и apache2/php.ini при запуске через apache.
Вы выполняете phpinfo() через браузер, поэтому вы получаете /etc/php5/apache2/php.ini в качестве ответа. Запуск php -r "phpinfo();" | grep "Loaded Configuration" php -r "phpinfo();" | grep "Loaded Configuration" php -r "phpinfo();" | grep "Loaded Configuration" с терминала должна выводить CLI ini. Такая же функция, изменения контекста.
Преимущество этой системы, очевидно, заключается в том, чтобы допускать различные конфигурации в зависимости от контекста. Для упрощенного примера вы можете захотеть safe_mode в apache, но это не нужно в режиме CLI.
Ваши пути .ini самом деле довольно необычны. Как правило, по умолчанию .ini – это только php.ini а CLI .ini называется php-cli.ini и они находятся в одной папке.
Я не эксперт по этому вопросу, но это должна быть основная идея. Если у кого есть какие-либо исправления, я буду рад их услышать.