Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как включить файл php.ini в другой файл php.ini?

Автор вопроса: Itay Moav -MalimovkaОтветов: 7

Как включить файл 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

phpconfiguration

Ответы

Ответ 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 это происходит при каждом вызове.

файлы .user.ini

РЕЗЮМЕ: В дополнение к основному файлу 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.

Похожие материалы