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

42

上周我配置了一个Web服务器,它工作得很好。

今天我请求它的主页时,发现一个时区错误,应该在我的php.ini文件中进行配置。

我在我的Web服务器上尝试了 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,带有libphp5.so Apache模块

1
可能相关的内容:重启php-fpm - morrsky
重新启动php-fpm。这可能会有所帮助:restart php-fpm - morrsky
https://serverfault.com/questions/21437/in-ubuntu-i-make-changes-to-php-ini-but-nothing-happens/21439#21439 - Daniel Cheung
4个回答

38

简而言之,如果重启 Apache 或 Nginx 后仍然出现问题,也请尝试重启 php-fpm 服务。

这里的答案并不能总是满足强制重新加载 php.ini 文件的要求。我多次采取这些步骤,却没有更新,只有在重启 php-fpm 服务 后才找到需要的解决方案。因此,如果重启 Apache 或 Nginx 没有触发 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

或者,根据您的系统,采用等效的命令。

上述命令直接来自此服务器错误答案


1
对于DigitalOcean上Ubuntu用户而言,使用命令sudo systemctl restart php7.2-fpm.service即可解决问题。 - Devo
1
RHEL 7 + Remi repo 作为 PHP 8.1 的源:systemctl restart php81-php-fpm。您可以通过键入 systemctl --type=service --state=running 找到您的 php-fpm 名称。 - DerHelge
1
使用以下命令查找服务名称:service --status-all | grep 'php' - hbit

31

为了使php.ini重新加载,应该重新启动Apache。

尝试在命令行中使用sudo service apache2 restart。 或者使用sudo /etc/init.d/apache2 restart


11
你也可以使用 service apache2 reloadapachectl -k graceful 优雅地重启 Apache 服务器。 如 Apache 的文档中所述:

USR1 或优雅信号会导致父进程通知子进程在完成当前请求后退出(如果它们没有提供服务,则立即退出)。父进程会重新读取配置文件并重新打开其日志文件。当每个子进程死亡时,父进程会用新一代配置中的子进程替换它,该子进程立即开始提供新请求的服务。


4

sudo apachectl restart 在运行 Mac 最新的 Big Sur 操作系统的情况下可以实现操作。

对于 Homebrew 的 Apache 用户,使用 brew services restart httpd 进行重启。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接