WordPress 编辑器未更新文件:无法与站点通信以检查致命错误
Posted
技术标签:
【中文标题】WordPress 编辑器未更新文件:无法与站点通信以检查致命错误【英文标题】:WordPress Editor not updating files: Unable to communicate back with site to check for fatal errors 【发布时间】:2019-03-11 07:03:28 【问题描述】:各位开发者和问题解决者您好。我在更新 WordPress 网站中的 header.php 文件时遇到了问题。
首先,我尝试通过 C-Panel -> 文件管理器手动更新文件。代码似乎保留在文件中,但是当您以隐身模式和不同的网络浏览器查看页面源代码时,代码不会呈现。
这不是服务器问题,我已经联系了服务器支持团队,并且 mysql 没有报告任何错误日志。
从我在 Google 上进行一些搜索可以找到的解决方案似乎并不多。
完全错误
无法与站点通信以检查致命错误,因此 PHP 更改已恢复。您将需要通过其他方式上传您的 PHP 文件更改,例如使用 SFTP。
任何帮助都将不胜感激。
【问题讨论】:
是 Cpanel 给你这个错误吗?如果是这样,可能是 Cpanel 在您更改后检查 PHP 错误,如果检测到任何错误,则恢复。我建议使用本地环境来更新和测试文件,而不是使用 Cpanel 文件管理器/FTP。你能检查PHP日志吗? Mtxz 此错误显示在您直接编辑主题文件的编辑器的 WordPress 仪表板中。 【参考方案1】:此错误来自 Wordpress 4.9 中包含的 Wordpress 功能。它基本上会在 WP 文件编辑器中上传文件时检查 PHP 错误,以防止保存可能/将破坏您的网站的代码。
主要是一个插件(或服务器配置)阻止 Wordpress 环回检查以正确检查由您的更新引起的潜在错误。由于 Wordpress 无法检查您的新代码是否会产生错误,它会阻止代码更新。
检查这些链接:
https://wpengine.com/support/php-editor-errors-wordpress-4-9-higher/ https://wordpress.org/support/topic/cant-edit-main-theme-php-files-after-upgrading-to-4-9/您可以尝试禁用插件以查看该功能是否恢复正常,或者使用 FTP/SFTP(不使用 Wordpress 文件编辑器)更新您的文件。
【讨论】:
Mtxz,感谢您提供。我要等到星期二才能接受这个。我可能会备份整个网站并进一步调查。【参考方案2】:现在,从技术上讲,这并不能解决手头的问题。但我刚刚添加了一个名为 Insert Headers and Footers 的 WordPress 插件,并添加了标头脚本,它运行成功。
【讨论】:
【参考方案3】:对我有用的是禁用所有插件,然后重新启用它们。这是由 wordpress 更新引起的。现在一切都按预期工作,但令人沮丧..
PS:使用批量停用操作。
【讨论】:
该错误最终是由“编码不良”的主题或插件引起的,至少从 WordPress Core 的角度来看是这样。虽然各种事情可能会暂时解决问题,但除非扩展的作者更新他们的代码(或者您停用/删除有问题的插件),否则错误可能最终会再次出现。另一种选择可能是禁用 WordPress PHP 代码验证功能,并将自定义函数安装为 MU 插件(至少在理论上)...【参考方案4】:我遇到了类似的问题,我的 wordpress 版本是 5.2.2。
“数据库浏览器”插件,未经我的 WordPress 版本测试,造成了这个问题。它是通过停用该插件来修复的。
所以请检查“未经您的 WordPress 版本测试”的插件(这可以在从仪表板安装插件时看到 -> 插件 -> 添加新的),停用它们(如果不需要)并尝试使用“主题编辑器”来更新文件。
【讨论】:
【参考方案5】:我参加聚会有点晚了,而 Mtxz 的回答是正确的。然而,他们的解决方案并没有“解决”这个问题。我找到了this forum,它说您可以通过删除 wp-admin/includes/file.php 文件中的第 492 - 599 行来解决它。
第一行是if ( $is_active && 'php' === $extension )
,第三最后一行是return new WP_Error( 'php_error', $message, $result );
,后跟两行括号。
这解决了我的几台服务器上的问题。
注意:此解决方案还删除了 PHP 调试,因此如果您有语法错误并且您这样做,您的站点可能会崩溃并且您无法编辑文件,除非您通过 SFTP/FTP .与往常一样,最好在编辑文件之前进行备份。
【讨论】:
这是一些很棒的见解。如果将来出现,我会回过头来讨论这个问题。干杯! 实际上最好不要删除该代码。错误来自文件 wp-admin/includes/file.php 它退出 2 个测试,1 个带有:$r = wp_remote_get( $url, compact( 'cookies', 'headers', 'timeout', 'sslverify' ) );
,另一个只有:@987654325 @ 只需在超时后的第二个中添加, 'sslverify'
,您应该能够推送您的文件:)【参考方案6】:
就我而言,我在 cloudflare 后面使用了 wordpress 安装。我的网站协议是 HTTPS,因为我使用了 cloudflare 证书。但是,在服务器端,它是一个自签名证书。
我已经安装了一个让我们加密的证书来代替自签名证书,然后它就可以工作了。之后,我可以在 wordpress 文件编辑器中保存 PHP 文件。
安装了一个名为health check的wordpress插件后,发现报错是“curl self signed certficate”。
【讨论】:
【参考方案7】:Cloudflare 也是我的问题。我有一个防火墙规则限制对 wp-admin 的访问,这阻止了我保存文件编辑。我必须添加防火墙规则以允许我的特定 IP 地址。
【讨论】:
【参考方案8】:我同意@nickdevyyc 的观点,对此没有技术解决方案。但是最好我们可以使用一些提供文件管理器的外部插件,并且我们可以在其中编辑每个文件。我在这里找到了一个
https://wordpress.org/plugins/theme-editor/
与我一起工作就像一个魅力,拯救我的一天!
【讨论】:
【参考方案9】:如果您使用 Cloudflare,请尝试使用 Cloudflare 的“开发模式”按钮。 (这就是为我治愈它的原因)。其他答案提到了 Cloudflare 的问题,但开发模式很容易检查它是否能解决问题,只要你想编辑就很容易实现,而且很安全,因为如果你忘记关闭它,它会自行禁用。
【讨论】:
以上是关于WordPress 编辑器未更新文件:无法与站点通信以检查致命错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 WordPress 多站点创建子域时自动更新 Windows 8 主机文件