我的 phpinfo.php 没有显示用于存放其他 PHP 配置文件的额外文件夹。我在 CentOS v6.3 32 位上运行 Apache v2.4.4(带 PHP DSO)和 PHP v5.4.14。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" 导出 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
配置文件(php.ini)路径:/usr/local/lib 加载的配置文件:/usr/local/lib/php.ini 扫描 /usr/local/lib/php/custom 中的其他 .ini 文件 解析的其他 .ini 文件: (无)
步骤 2(共 2 步)——Apache 设置
第一次尝试
===================
在 apache2/bin/envvars 和 apache2/bin/envvars-std 文件中添加了以下条目。
(关于 envvars 和 envvars-std 文件之间的区别,您有什么看法?)
PHP_INI_SCAN_DIR="/usr/local/lib/php/custom" 导出 PHP_INI_SCAN_DIR
重新启动了 Apache 服务。但from 的
值Scan this dir for additional .ini files
php信息.php文件显示为空。
第二次尝试
===================
因此,我从 envvars 和 envvars-std 中删除了条目。我有模块mod_env默认加载。我在httpd配置文件。
SetEnv PHP_INI_SCAN_DIR “/usr/local/lib/php/custom”
已重新启动 Apache 服务。来自的
值Scan this dir for additional .ini files
php信息.php文件仍然显示为空。
第三次尝试
===================
再次,我删除了httpd配置文件VirtualHost
。在我的目录部分添加了相同的行httpd-vhosts.conf。
SetEnv PHP_INI_SCAN_DIR “/usr/local/lib/php/custom”
已重新启动 Apache 服务。来自的
值Scan this dir for additional .ini files
php信息.php文件仍然显示为空。
回答您的一些想法:
是的,我的php信息.php文件仅由 组成
phpinfo()
。它不是静态文件。是的,浏览器缓存已清理。我也尝试了其他浏览器。
最后
那么,谁能告诉我为什么我的 phpinfo 文件没有显示附加 PHP 配置文件的额外文件夹?
答案1
您必须在设置该环境变量的情况下启动 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"