Вопрос: phpinfo.php не показывает дополнительную папку для дополнительных файлов конфигурации PHP


Мой phpinfo.php не показывает дополнительную папку для дополнительных файлов конфигурации PHP. Я запускаю Apache v2.4.4 (с PHP DSO) и PHP v5.4.14 на CentOS v6.3 32-bit. Установки Apache и PHP скомпилированы из источника.

Я не использовал параметр конфигурации «--with-config-file-scan-dir = PATH» для PHP. (И не будет использоваться, потому что мне понадобится более одной папки).

Переменные среды PHPRC и Apache Directive PHPIniDir связаны с основным файлом PHP, который оставляет меня с переменной среды «PHP_INI_SCAN_DIR» для работы. Ниже приведены шаги, которые я сделал: -

ШАГ 1 из 2 - Настройки для PHP

«PHP_INI_SCAN_DIR» - это переменная среды ОС, которая должна быть установлена ​​до запуска Apache. Поэтому я добавил следующую запись в файл /etc/profile.d/php.sh.

PHP_INI_SCAN_DIR = "/ USR / местные / Библиотека / PHP / пользовательский"
экспорт PHP_INI_SCAN_DIR

Затем перезагрузили систему.

Теперь команды env | grep PHP ',' php -i | grep INI 'и' php -ini 'дает мне следующие результаты.

=> # env | grep PHP

PHP_INI_SCAN_DIR = / USR / местные / Библиотека / PHP / пользовательский

=> # php -i | grep INI

PHP_INI_SCAN_DIR => / usr / local / lib / php / custom
_SERVER ["PHP_INI_SCAN_DIR"] => / usr / local / lib / php / custom

=> # php --ini

Файл конфигурации (php.ini) Путь: / usr / local / lib
Загруженный файл конфигурации: /usr/local/lib/php.ini
Сканировать дополнительные файлы .ini в: / usr / local / lib / php / custom
Дополнительные .ini-файлы проанализированы: (нет)

ШАГ 2 из 2 - Настройки для Apache

Первая попытка

===================

Добавлена ​​следующая запись в файлах apache2 / bin / envvars и apache2 / bin / envvars-std.

(Любые комментарии о том, какая разница между файлами envvars & envvars-std?)

PHP_INI_SCAN_DIR = "/ USR / местные / Библиотека / PHP / пользовательский"
экспорт PHP_INI_SCAN_DIR

Перезапуск службы Apache. Но значение «Сканировать этот каталог для дополнительных .ini-файлов» из файла phpinfo.php показывается пустым.

Вторая попытка

===================

Поэтому я удалил записи из envvars & envvars-std. У меня есть модуль mod_env, загруженный по умолчанию. Я добавил в httpd.conf следующее.

SetEnv PHP_INI_SCAN_DIR "/ usr / local / lib / php / custom"

Перезапуск службы Apache. Значение для «Сканировать этот каталог для дополнительных файлов .ini» из файла phpinfo.php по-прежнему показывается пустым.

Третья попытка

===================

Опять же, я удалил записи из httpd.conf. Добавлена ​​такая же строка в раздел каталога моего VirtualHost в httpd-vhosts.conf.

SetEnv PHP_INI_SCAN_DIR "/ usr / local / lib / php / custom"

Перезапуск службы Apache. Значение для «Сканировать этот каталог для дополнительных файлов .ini» из файла phpinfo.php по-прежнему показывается пустым.

ОТВЕТЫ НА НЕКОТОРЫЕ ИЗ ВАШИХ МЫСЛИ:

  • Да, файл phpinfo.php создан только из phpinfo (). Это не статический файл.

  • Да, кеш браузера был очищен. Я также попробовал другой браузер.

в заключение

Итак, может ли кто-нибудь сказать мне, почему мой файл phpinfo не показывает дополнительную папку для дополнительных файлов конфигурации PHP?

Заранее спасибо.


6
2018-06-07 15:02


Источник


Особенность, о которой идет речь, как недокументированная, так и болезненная, чтобы нормально работать; лучший вариант - использовать флаг времени компиляции для установки этого каталога; в противном случае попробуйте использовать символические ссылки для управления конфигурацией вместо изменения пути. - TML


Ответы:


Вы должны запустить apache с этим набором переменных среды. Установка переменной в /etc/profile.d/php.sh только устанавливает его для самого исполняемого файла PHP, который не используется mod_php5.

Я просто прошел через этот римамарол. Установка переменной с помощью SetEnv также не будет работать, как определено после загрузки mod_php5.

В CentOS 6.5 я обнаружил, что редактирование /etc/sysconfig/httpd позволяет вам устанавливать и экспортировать дополнительные переменные среды для самого процесса apache. Поэтому попробуйте добавить его туда:

export PHP_INI_SCAN_DIR="/usr/local/lib/php/custom"


1
2018-04-20 16:20