Я обнаружил, что:
Когда я набираю на терминале следующее:
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
и они находятся в одной папке.
Я не эксперт по этому вопросу, но это должна быть основная идея. Если у кого есть какие-либо исправления, я буду рад их услышать.