phpinfo.php 没有显示额外的 PHP 配置文件的额外文件夹

Aru*_* GP 6 php configuration apache-2.2

我的 phpinfo.php 没有显示额外的 PHP 配置文件的额外文件夹。我在 CentOS v6.3 32 位上运行 Apache v2.4.4(使用 PHP DSO)和 PHP v5.4.14。Apache 和 PHP 安装是从源代码编译的。

我没有使用--with-config-file-scan-dir=PATHPHP的配置选项。(并且不会使用,因为我将需要多个文件夹)。

环境变量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 PHPphp -i | grep INIphp --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
在以下位置扫描其他 .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/local/lib/php/custom"
导出 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 服务。来自phpinfo.php文件的
值仍然显示为空。Scan this dir for additional .ini files

第三次尝试

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

同样,我从httpd.conf 中删除了条目。VirtualHosthttpd-vhosts.conf中将同一行添加到 my 的 Directory 部分。

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

重新启动 Apache 服务。来自phpinfo.php文件的
值仍然显示为空。Scan this dir for additional .ini files

回答您的一些想法:

  • 是的,我的phpinfo.php文件仅由phpinfo(). 它不是静态文件。

  • 是的,浏览器缓存已被清除。我还尝试了其他浏览器。

最后

那么,谁能告诉我为什么我的 phpinfo 文件没有显示额外的 PHP 配置文件的额外文件夹?

Ben*_*doh 2

您必须使用该环境变量集启动 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"