【问题标题】:Corrupted php.ini (wordpress)损坏的 php.ini (wordpress)
【发布时间】:2019-11-06 19:02:25
【问题描述】:

我一直在开发一个多年没有任何更新的 Wordpress 网站,并为主题更改做准备。

在更新所有插件/Wordpress 5.2/PHP 7.2 后,一切似乎都很顺利,但是该网站一直在经历间歇性崩溃(它会运行一段时间,然后会崩溃 5-10 分钟)[编辑:网站崩溃是回想起来可能不是由 php.ini 问题直接引起的]

查看错误日志中的 cpanel 我得到了错误:

PHP:  syntax error, unexpected TC_LABEL, expecting '=' in /home/website/public_html/php.ini on line 1 //sometimes it includes a referer

运行php -i | grep php.ini:

Configuration File (php.ini) Path => /opt/imh/imh-php72/root/usr/lib/php
Loaded Configuration File => /opt/imh/imh-php72/root/usr/lib/php/php.ini

php.ini(在public_html中)多次包含相同的重复路径(根据我的查找和替换为78,886次):

/opt/imh/imh-php72/root/usr/lib/php/extensions/no-debug-non-zts-20170718

第 1 行:

/opt/imh/imh-php72/root/usr/lib/php/extensions/no-debug-non-zts-20170718[/opt/imh/imh-php72/root/usr/lib/php/extensions/no-debug-non-zts-20170718P/opt/imh/imh-php72/root/usr/lib/php/extensions/no-debug-non-zts-20170718H/opt/imh/imh-php72/root/usr/lib/php/extensions/no-debug-non-zts-20170718P/opt/imh/imh-php72/root/usr/lib/php/extensions/no-debug-non-zts-20170718]/opt/imh/imh-php72/root/usr/lib/php/extensions/no-debug-non-zts-20170718

我注意到20170718 之后有时会有一个额外的字符。我下载了一个本地副本并进行了查找和替换并删除了路径的所有实例,剩下的是一个“正常”的 php.ini(即好像文件中的每个 character 都被替换为 path + character)

[编辑:将 public_html php.ini 更改为 php.ini_bk 会从 cpanel 日志中删除错误]

个人 PS:请注意我不是 PHP 也不是 Wordpress 开发人员(通常我在 MERN 堆栈中工作)

【问题讨论】:

  • 备份后更新你的插件和主题。然后重命名文件 /home/website/public_html/php.ini 并测试是否仍然是同样的问题
  • 所有插件都已经完全更新,主题也是最新版本
  • 您的 php.ini 永远不能被运行 Web 服务器的进程写入,并且不应位于(或位于)Web 服务器的文档根目录中。如果您的 PHP 代码可以更改 php.ini 的内容,那么您有一个严重的安全问题。
  • 只需将 php.ini 重命名为 php.ini_bk 文件然后检查
  • PHP:语法错误,意外的 TC_LABEL,在第 1 行的 /home/website/public_html/php.ini 中期待 '=' //有时它包含引用者...错误在 public_html root 中。检查它是否没有隐藏

标签: php wordpress


【解决方案1】:

public_html 不是 php.ini 的正确位置

你可以做一个

php -i | grep php.ini

你有几个选择......首先备份你的“旧”php.ini

  • 重建您的 PHP 配置

  • 下载最新的 PHP

  • 下载 PHP 源代码并从中复制 php.ini 模板

有时,全新安装和导入比更新非常旧的 WordPress 更好。

问候汤姆

【讨论】:

  • php.ini 应该在哪里?我看到 php.ini 在我将 wordpress 从 4.x 更新到 5.2 的那一天被修改了
  • php.ini 通常位于 apache 上的 /etc/php/7.2/apache2/php.ini 中。如果您使用的是 PHP FPM,它可能位于 /etc/php/7.2/fpm/php.ini 或 /etc/ 的子目录中的某个位置
  • 由于该网站托管在共享的 inmotion 服务器上,因此此答案是否仍然适用,因为我假设每个人的 php 安装和 php.ini 都相同?
  • 同时运行 php -i | grep php.ini 输出 Configuration File (php.ini) Path => /opt/imh/imh-php72/root/usr/lib/php 和 Loaded Configuration File => /opt/imh/imh-php72/root/usr/lib/php/php.ini
  • 不,您应该联系您的托管服务提供商。我认为它来自一个 zend 扩展,并且与 webroot 中 php.ini 中的设置发生冲突。可以这样做来覆盖 php 设置,我会坚持使用 php php.net/manual/en/function.ini-set.php 或在 .htaccess 文件中设置 php 设置。尝试备份文件并将其删除。
猜你喜欢
  • 1970-01-01
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
  • 2017-06-26
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多