Как включить файл php.ini в другой файл php.ini?
Как включить файл php.ini в другой файл php.ini?
Ответ 1
Я не думаю, что вы можете "включить".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 - что не так сложно, между прочим - самая сложная часть - получить необходимые зависимости.
И вот пост в внутреннем @mailling-list, который говорит то же самое, что и я: файлы конфигурации и PHP_CONFIG_FILE_SCAN_DIR
Ответ 2
Я установил 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
Ответ 3
можно также определить путь в ~/.bashrc
export PHP_INI_SCAN_DIR=/usr/local/lib/php.d
Ответ 4
Кажется, вы не можете включить один 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
(произвольно phpinfo.php
файл, содержащий только <?php phpinfo();
), откройте соответствующий URL в вашем браузере и проверьте список проанализированных каталогов и список файлов, которые загружаются в его верхней части.,
/etc/php5/cgi/conf.d
всегда должен быть включен (я думаю, потому что он был скомпилирован в исполняемый файл php) и, возможно, на самом деле не нужен.
Ответ 5
Вы не можете. Читайте онлайн-страницы:
РЕЗЮМЕ: файл конфигурации (php.ini) читается при запуске PHP. Для версий модуля сервера PHP, это происходит только один раз, когда сеть сервер запущен. Для CGI и CLI версии, это происходит на каждом вызов.
РЕЗЮМЕ: В дополнение к основному php.ini файл, PHP сканирует файлы INI в каждом каталоге, начиная с каталог запрашиваемого файла PHP, и прокладывает себе путь к корень документа (как установлено в $_SERVER [ 'DOCUMENT_ROOT']). Только INI настройки с режимами PHP_INI_PERDIR и PHP_INI_USER будет признан в. INI файлы в стиле .user.ini.
Ответ 6
Вы можете попытаться имитировать его, используя функцию ini_set. Но, как указывает "справочная страница", не все опции ini могут быть изменены с помощью ini_set. Это определенно полезная функция.
Ответ 7
На самом деле вы можете. Я только что проверил это на 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
Кстати, это будет наиболее полезно, если вы разделите свои настройки по темам и если вы хотите установить набор для dev и еще один для производства. Тогда вы можете сделать это в стиле Debian/Apache, как
/etc/php/conf-available/
/etc/php/conf-enabled/
с символами от второго до другого и включения к этому.