我看到一个奇怪的问题,我的PHP.ini没有被使用,如果我在启动时没有明确地将它传递给PHP-fpm.
这是我正在使用的暴发脚本:
start on (filesystem and net-device-up IFACE=lo) stop on runlevel [016] pre-start script mkdir -p /run/PHP end script expect fork respawn exec /usr/local/PHP/sbin/PHP-fpm --fpm-config /etc/PHP/PHP-fpm.conf
如果使用上面的PHP启动PHP,我的PHP.ini永远不会被使用,即使它位于配置文件(PHP.ini)Path中.
这是PHPinfo()的相关部分:
Configuration File (PHP.ini) Path /etc/PHP/ Loaded Configuration File (none) Scan this dir for additional .ini files (none) Additional .ini files parsed (none)
如果我修改upstart脚本的最后一行,将PHP-fpm明确指向PHP.ini:
exec /usr/local/PHP/sbin/PHP-fpm --fpm-config /etc/PHP/PHP-fpm.conf -c /etc/PHP/PHP.ini
然后我们看到PHP.ini已加载:
Configuration File (PHP.ini) Path /etc/PHP/ Loaded Configuration File /etc/PHP/PHP.ini Scan this dir for additional .ini files (none) Additional .ini files parsed (none)
为什么会这样?这是PHP-fpm的怪癖吗?
次要更新:对于使用apt-get安装的PHP5-fpm,这似乎也是一个问题.
我通过运行以下命令在Ubuntu Server 12.04虚拟机中进行了测试安装:
sudo apt-get install Nginx PHP5-fpm
PHP-FPM和Nginx在安装后启动,一切似乎都很好.然后,我在Nginx的配置中取消注释了PHP的设置,并放置了一个测试PHPinfo()文件来检查PHP的设置.
相关位是:
Configuration File (PHP.ini) Path /etc/PHP5/fpm Loaded Configuration File (none) Scan this dir for additional .ini files /etc/PHP5/fpm/conf.d Additional .ini files parsed /etc/PHP5/fpm/conf.d/10-pdo.ini
我注意到也没有加载PHP.ini.但是,如果我去/ etc / PHP5 / fpm,我可以看到PHP.ini存在.我还检查了PHP-FPM的启动脚本,并且-c参数未用于将ini文件链接到PHP.对于希望PHP-FPM自动加载PHP.ini的人来说,这可能会让人感到困惑.
不,我们没有明确需要在启动时将PHP.ini文件传递给PHP-fpm.
让我们首先处理使用apt-get安装的PHP5-fpm.一旦我重新启动服务器,PHP.ini就被加载了.这很奇怪,但它确实奏效了.
回到我的问题.
请注意,我用–with-config-file-path = / etc / PHP /编译了PHP.使用–with-config-file-path时,向文件夹添加尾部斜杠会导致此问题.
在我的情况下,我运行make clean来清理旧的编译二进制文件.然后我用–with-config-file-path = / etc / PHP运行configure(注意文件夹没有斜杠).然后制作并安装.