Как включить файл php.ini в другой файл php.ini?
Как включить файл php.ini в другой файл php.ini?
Ответы (7)
Я не думаю, что вы можете «включить» файлы .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
PHPRC, которая позволяет изменить каталог по умолчанию php.ini (и, возможно, другие ini-файлы).
- person Emre Yazici; 29.07.2011
Также можно определить путь в ~/.bashrc
export PHP_INI_SCAN_DIR=/usr/local/lib/php.d
Я установил 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
На самом деле ВЫ МОЖЕТЕ. Я только что протестировал его на 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/
с символикой от второго к другому и включением в этот.
Кажется, вы не можете включить один 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) и, возможно, на самом деле не нужен.
Вы не можете. Читать онлайн-страницы:
РЕЗЮМЕ: Файл конфигурации (php.ini) считывается при запуске PHP. Для версий серверного модуля PHP это происходит только один раз при запуске веб-сервера. Для версии CGI и CLI это происходит при каждом вызове.
РЕЗЮМЕ: В дополнение к основному файлу php.ini, PHP сканирует INI-файлы в каждом каталоге, начиная с каталога запрошенного файла PHP и продвигаясь вверх до текущего корня документа (как указано в $_SERVER['DOCUMENT_ROOT ']). Только настройки INI с режимами PHP_INI_PERDIR и PHP_INI_USER будут распознаваться в файлах INI в стиле .user.ini.
Вы можете попытаться смоделировать это, используя функцию ini_set. . Но, как указывает «справочная страница», не все параметры ini можно изменить с помощью ini_set. Хотя это определенно полезная функция.