我遇到了一个奇怪而愚蠢的问题,我花了几个小时试图解决它。我已经安装了 apache 2.2.10(很久以前从源代码编译的)和 PHP-5.3.6。除了我无法让 PHP 加载 php.ini 文件之外,两者都运行良好。
这是我的 config.nice 文件:
'./configure' \
'--prefix=/usr/local/php-5.3.6' \
'--with-config-file-path=/usr/local/php-5.3.6/lib' \
'--with-apxs2=/usr/local/apache-2.2.10/bin/apxs' \
'--with-curl' \
'--with-mysql' \
'--with-zlib' \
'--with-bz2' \
'--with-gd' \
'--with-jpeg-dir' \
'--with-png-dir' \
'--enable-mbstring' \
'--with-freetype-dir' \
'--with-t1lib' \
'--enable-gd-native-ttf' \
'--enable-gd-jis-conv' \
'--with-openssl' \
'--with-openssl-dir' \
'--enable-pcntl' \
"$@"
我已经将此 config.nice 用于自 5.2 以来的所有 PHP 版本,并做了一些细微的更改,它在几台服务器上都以这种方式运行。这可能是我遗漏了一些小细节,我不知道是什么。
我设置了“--with-config-file-path”,因为我认为 php 找不到自己的路径或其他东西。在定义的路径中,我有一个名为 php.ini 的文件,它是从 PHP 5.3.6 tarball(php.ini-development)复制而来的。
该文件应该可以正常工作,因为它是原始文件,但我看不到,因为它没有加载 - phpinfo()返回:
Configuration File (php.ini) Path:
/usr/local/php-5.3.6/lib
Loaded Configuration File:
(none)
有人知道可能是什么问题吗?
相关信息:
@Server OS:Slackware 12.2
@Apache 版本:2.2.10
@Apache 用户/组:daemon/daemon
@PHP 版本:5.3.6 (最新)
@PHP ini 文件:/usr/local/php-5.3.6/lib/php.ini
@PHP ini 文件权限:777 (daemon.daemon)
答案1
我猜想文件实际上不存在,或者存在权限问题。我会运行echo "<?php phpinfo() ?>" | strace php 2>&1 | grep php.ini
看看发生了什么。
答案2
对于仍然无法解决此问题的人:就我而言,是 SELinux 权限阻止了 PHP 加载 php.ini。使用以下命令更改 php.ini 文件的上下文即可解决问题:
semanage fcontext -a -t httpd_config_t "/usr/local/lib/php.ini"
restorecon -v -R /usr/local/lib/