如何强制重新加载php.ini文件?

时间:2014-12-10 09:06:29

标签: php apache configuration

我上周配置了一个Web服务器,它工作正常。

今天我请求它的主页,我看到时区错误,因为它应该配置到我的php.ini文件中。

我在我的网络服务器上试了phpinfo();,它给了我:

Configuration File (php.ini) Path   /opt/rrh/php/lib 

但是没有加载php.ini文件。

我调查一下,php文件存在且拥有非常大的权限:

 ls -la /opt/rrh/php/lib   
 -rwxrwxrwx  1 apache root 68448 Nov 22 10:10 php.ini

我尝试parse_ini_file("/opt/rrh/php/lib/php.ini"));,它不会返回任何错误...

当然,我重启了我的服务器十几次。

我可以做些什么来解决我的问题?

我的系统:

  1. Redhat 6
  2. Apache 2.4
  3. PHP 5.5.19 with libphp5.so apache module

3 个答案:

答案 0 :(得分:14)

要强制重新加载php.ini,你应该重启apache。

从命令行尝试sudo service apache2 restart。 或sudo /etc/init.d/apache2 restart

答案 1 :(得分:9)

您还可以使用service apache2 reloadapachectl -k graceful正常重启apache服务器。 正如apache doc所说:

  

USR1或优雅信号会导致父进程通知   孩子在他们当前的要求后退出(或立即退出   如果他们没有提供任何服务)。父母重读了它   配置文件并重新打开其日志文件。每个孩子都会死去   父母将其替换为来自新一代的孩子   配置,立即开始提供新请求。

答案 2 :(得分:7)

TL; DR;如果重新启动apache或nginx后仍然遇到问题,请尝试重新启动php-fpm服务。

这里的答案并不总是满足强制重新加载php.ini文件的要求。在很多情况下,我采取这些步骤无需更新即可获得回报,只是在重新启动php-fpm服务之后才找到了我需要的解决方案。因此,即使您知道文件已更新,如果重新启动apache并不会触发php.ini更新,也请尝试重新启动php-fpm。

要重新启动服务:

注意:如果不是root,请在sudo之前添加

直接使用SysV Init脚本:

/etc/init.d/php-fpm restart        # typical
/etc/init.d/php5-fpm restart       # debian-style
/etc/init.d/php7.0-fpm restart     # debian-style PHP 7

使用服务包装器脚本

service php-fpm restart        # typical
service php5-fpm restart       # debian-style
service php7.0-fpm restart.    # debian-style PHP 7

使用Upstart(例如ubuntu):

restart php7.0-fpm         # typical (ubuntu is debian-based) PHP 7
restart php5-fpm           # typical (ubuntu is debian-based)
restart php-fpm            # uncommon

使用systemd(较新的服务器):

systemctl restart php-fpm.service        # typical
systemctl restart php5-fpm.service       # uncommon
systemctl restart php7.0-fpm.service     # uncommon PHP 7

或系统上的任何等效物。

以上内容直接取自this server fault answer