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

Posted

技术标签:

【中文标题】如何强制重新加载 php.ini 文件?【英文标题】:How to force reloading php.ini file? 【发布时间】:2015-02-08 09:49:30 【问题描述】:

我上周配置了一个网络服务器,它运行良好。

今天我请求它的主页,我看到一个时区错误,因为它应该配置到我的 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"));,它没有返回错误...

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

我还能做些什么来解决我的问题?

我的系统:

    红帽 6 Apache 2.4 PHP 5.5.19 与 libphp5.so apache 模块

【问题讨论】:

可能相关:restart php-fpm 再见了:restart php-fpm serverfault.com/questions/21437/… 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

TL;DR;如果重启 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

或您系统上的任何等价物。

以上命令直接取自this server fault answer

【讨论】:

对于 DigitalOcean Ubuntu 用户,sudo systemctl restart php7.2-fpm.service 成功了。【参考方案3】:

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

USR1 或优雅信号使父进程通知 孩子在当前请求后退出(或立即退出 如果他们不提供任何服务)。父母重新阅读它的 配置文件并重新打开其日志文件。随着每个孩子的死亡 父母用新一代的孩子替换它 配置,立即开始处理新请求。

【讨论】:

【参考方案4】:

sudo apachectl restart 在 2021 年完成任务,运行 Mac 最新的 Big Sur 操作系统

对于 Homebrew apache 用户,它是 brew services restart httpd

【讨论】:

以上是关于如何强制重新加载 php.ini 文件?的主要内容,如果未能解决你的问题,请参考以下文章

PHP如何增加session.gc_maxlifetime?更改 php.ini 不起作用

如何强制重新加载缓存的 HTML 文件

在vagrant homestead上配置php.ini

如何强制重新加载 NLog 配置文件?

如何强制浏览器重新加载缓存的 CSS 和 JavaScript 文件

在 Visual Studio 中调试时如何强制 Chrome 浏览器重新加载 .css 文件?