我们是否需要明确将 php.ini 的位置传递给 php-fpm?

我们是否需要明确将 php.ini 的位置传递给 php-fpm?

我看到一个奇怪的问题,如果我在启动时php.ini没有明确地将它传递给它,那么它就不会被使用。php-fpm

这是我正在使用的 upstart 脚本:

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) 

如果我修改 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 的一个怪癖吗?


小更新:对于使用 安装的 php5-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,我可以看到存在一个php.ini。我还检查了 PHP-FPM 的启动脚本,并且-c没有使用该参数将 ini 文件链接到 PHP。这可能会让那些希望 PHP-FPM 自动加载 php.ini 的人感到困惑。

答案1

不,我们不需要在启动时明确传递php.ini文件。php-fpm

让我们首先处理php5-fpm使用 进行安装apt-get。一旦我重新启动服务器,php.ini就会加载。这很奇怪,但它确实有效。

回到我的问题。

注意,我是用 编译 PHP 的--with-config-file-path=/etc/php/。出现此问题是由于在使用 时在文件夹中添加了尾部斜杠所致--with-config-file-path

就我而言,我运行make clean来清除旧的编译二进制文件。然后我运行 configure --with-config-file-path=/etc/php(请注意,文件夹末尾没有斜杠)。然后makemake install

完成后,您会发现php.iniin/etc/php已被自动加载,无论我们是否使用-c开关将其传递给 php-fpm。

相关内容