我看到一个奇怪的问题,我的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从不使用,即使它在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为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虚拟机中进行了testing安装:
sudo apt-get install nginx php5-fpm
PHP-FPM和nginx在安装后启动,一切都很顺利。 然后,我取消了nginxconfiguration中php的设置,并放置了一个testingphpinfo()文件来检查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.ini被PHP-FPM自动加载的人来说,这可能会让人感到困惑。
不,我们不明确地需要在启动时将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运行configuration(注意文件夹没有结尾的斜线)。 然后make并make install 。
一旦完成,您会发现/etc/php中的php.ini会自动加载,不pipe我们是否使用-c开关将它传递给php-fpm。