Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

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

=> # env | grep PHP

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

=> # 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

Configuration File (php.ini) Path: /usr/local/lib
Loaded Configuration File:         /usr/local/lib/php.ini
Scan for additional .ini files in: /usr/local/lib/php/custom
Additional .ini files parsed:      (none)

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

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

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

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

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

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

Перезапустил службу Apache.
Но ценность для Scan this dir for additional .ini files из phpinfo.php файл отображается пустым.

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

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

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

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

Перезапустил службу Apache.
Значение для Scan this dir for additional .ini files из phpinfo.php файл по-прежнему отображается пустым.

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

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

Я снова удалил записи из httpd.conf. Эта же строка добавлена ​​в раздел "Каталог" моего VirtualHost в httpd-vhosts.conf.

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

Перезапустил службу Apache.
Значение для Scan this dir for additional .ini files из phpinfo.php файл по-прежнему отображается пустым.

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

в заключение

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

Вы должны запустить 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"