Как включить файл php.ini в другой файл php.ini?
Вопрос
Как включить файл php.ini в другой файл php.ini?
- Мне интересно, как RHEL/Fedora выполняет включение /etc/php.d/*. Они исправили PHP, чтобы сделать это возможным? gahooa 08.09.2009
- @gahooa это вопрос, который привел меня сюда. Вы когда-нибудь узнавали, как они выполняют включение /etc/php.d/*? Jeff Puckett 07.09.2016
- см. принятый ответ ниже, это тоже отвечает на ваш вопрос. Вы также можете сделать php -i (phpinfo()) и посмотреть, как был построен php Itay Moav -Malimovka 07.09.2016
Ответы
Ответ 1 · рейтинг 23 · Pascal MARTIN
Я не думаю, что вы можете "включить" файлы .ini из основного файла php.ini.
Однако одним из возможных решений может быть использование этой опции в строке конфигурации при компиляции PHP:
--with-config-file-scan-dir=PATH
Set the path where to scan for configuration files
Если эта опция используется во время компиляции, PHP будет искать каждый файл .ini в этом каталоге в дополнение к "обычному" файлу php.ini.
Я предполагаю, что это то, что используется, например, в Ubuntu, который использует другой файл .ini для каждого загруженного расширения вместо изменения php.ini.
Путь к файлу php.ini, определяемому с помощью этой опции, в строке конфигурации:
--with-config-file-path=PATH
Set the path in which to look for php.ini [PREFIX/lib]
Тем не менее, это, вероятно, означает, что вам придется перекомпилировать PHP - что, кстати, не так сложно - самая сложная часть - получить нужные вам зависимости.
И вот сообщение в списке рассылки internals@, в котором говорится то же самое, что и у меня: файлы конфигурации и PHP_CONFIG_FILE_SCAN_DIR
Ответ 2 · рейтинг 10 · Martin Zeitler
Также можно определить путь в ~/.bashrc
export PHP_INI_SCAN_DIR=/usr/local/lib/php.d
Ответ 3 · рейтинг 7 · hockey_dave
Я установил memcached для php и не знал, как убедиться, что его ini был включен в мой php.ini, но, как оказалось, это происходит автоматически. Вы можете проверить, что загружается, запустив php --ini.
php --ini
Configuration File (php.ini) Path: /opt/local/etc/php5
Loaded Configuration File: (none)
Scan for additional .ini files in: /opt/local/var/db/php5
Additional .ini files parsed: /opt/local/var/db/php5/memcached.ini
Ответ 4 · рейтинг 7 · ondelettes
На самом деле ВЫ МОЖЕТЕ. Я только что протестировал его на Debian 9 с PHP-FPM. Из какого-нибудь файла .ini/.conf используйте следующий синтаксис:
include=/path/to/special-php.ini
или даже
include=/path/to/special-dir-full-of-conf-files/*.conf
как это используется в
/etc/php/7.0/fpm/php-fpm.conf
include=/etc/php/7.0/fpm/pool.d/*.conf
Кстати, это будет наиболее полезно, если вы разделите свои настройки по темам или если вам нужен набор для разработки и еще один для производства. Тогда вы можете сделать это в стиле Debian/Apache, например
/etc/php/conf-available/
/etc/php/conf-enabled/
с символикой от второго к другому и включением в этот.
Ответ 5 · рейтинг 4 · sjas
Кажется, вы не можете включить один ini-файл в другой, чтобы на него ссылались и загружали. Но вы можете настроить php для загрузки нескольких файлов, указав, в каких папках искать.
При использовании настройки FastCGI (возможно, и в FPM, хотя я этого точно не знаю) вы можете экспортировать переменные среды из оболочки php.
Там вы можете сделать:
export PHP_INI_SCAN_DIR=/etc/php5/cgi/conf.d:/var/www/mydomain.net/etc
/var/www/mydomain.net/etc - это просто пример, это папка, в которую вы помещаете свои дополнительные ini-файлы. Кажется, это может быть список, разделенный :.
Используйте phpinfo.php (файл с произвольным именем, содержащий только <?php phpinfo();), откройте соответствующий URL-адрес в своем браузере и проверьте список каталогов, которые анализируются, и список загружаемых файлов в его верхней части.
/etc/php5/cgi/conf.d всегда должен быть включен (я думаю, потому что он был скомпилирован в исполняемый файл php) и, возможно, на самом деле не нужен.
Ответ 6 · рейтинг 1 · kv-prajapati
Вы не можете. Читать онлайн-страницы:
РЕЗЮМЕ: Файл конфигурации (php.ini) считывается при запуске PHP. Для версий серверного модуля PHP это происходит только один раз при запуске веб-сервера. Для версии CGI и CLI это происходит при каждом вызове.
РЕЗЮМЕ: В дополнение к основному файлу php.ini, PHP сканирует INI-файлы в каждом каталоге, начиная с каталога запрошенного файла PHP и продвигаясь вверх до текущего корня документа (как указано в $_SERVER['DOCUMENT_ROOT ']). Только настройки INI с режимами PHP_INI_PERDIR и PHP_INI_USER будут распознаваться в файлах INI в стиле .user.ini.
Ответ 7 · Stephen
Вы можете попытаться смоделировать это, используя функцию ini_set. . Но, как указывает "справочная страница", не все параметры ini можно изменить с помощью ini_set. Хотя это определенно полезная функция.
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.
Похожие материалы
- Как установить php 8 (или самый старый) в Windows 10
- Оптимизация разработки Laravel с помощью автоматизации: примеры и код
- Пессимистическая и оптимистическая блокировка в Laravel
- Как получить идентификатор элемента с помощью jQuery
- Решение с открытым исходным кодом для управления конфигурацией предприятия с пользовательским
- Конфигурация Grails log4j - ОШИБКА Отсутствует метод при настройке log4j: logger