我看到一个奇怪的问题,如果我在启动它时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.ini
则永远不会使用 my,即使它位于Configuration File (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)
php-fpm
如果我修改 upstart 脚本的最后一行以 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
.
我通过运行以下命令在 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
,我可以看到 aphp.ini
存在。我还检查了 PHP-FPM 的启动脚本,并且-c
没有使用参数将 ini 文件链接到 PHP。对于希望 php.ini 由 PHP-FPM 自动加载的人来说,这可能会造成混淆。
不,我们不需要在启动
php.ini
文件php-fpm
时明确地将其传递给。让我们首先处理
php5-fpm
安装的 usingapt-get
。一旦我重新启动服务器,它就php.ini
被加载了。这很奇怪,但它奏效了。回到我的问题。
请注意,我使用
--with-config-file-path=/etc/php/
. 问题是由于在使用--with-config-file-path
.就我而言,我跑去
make clean
清理旧的编译二进制文件。然后我运行配置--with-config-file-path=/etc/php
(注意文件夹没有尾部斜杠)。然后make
和make install
。完成后,您会发现
php.ini
in/etc/php
会自动加载,无论我们是否使用-c
开关将其传递给 php-fpm。