【问题标题】:Publishing or uploading failed. Error message: "The response is not a valid JSON response"发布或上传失败。错误消息:“响应不是有效的 JSON 响应”
【发布时间】:2021-11-28 12:16:23
【问题描述】:

今天我在 WordPress 中遇到了一个问题。当我尝试在 WordPress 管理部分创建一个新页面并上传新图像时,我试图找出解决方案,但我没有得到它......所以在打磨一个小时后我得到了一个解决方案......

错误

“发布失败。错误消息:响应不是有效的 JSON 响应。”

【问题讨论】:

  • 你说的“打磨一个小时后”是什么意思

标签: wordpress


【解决方案1】:

转到设置>永久链接。选择“帖子名称”并保存。

尝试更新您的帖子/页面。如果它不起作用,请尝试在设置>永久链接中选择另一个选项。

【讨论】:

  • 另外,检查 .htaccess 文件。
【解决方案2】:

现在,您可以使用 Classic Editor 插件来解决此问题。

错误的答案是我不知道的编辑器,但是有一个新的编辑器问题。如果您遇到同样的问题,请使用以下插件。为了解决这些问题,我正在研究这个问题。如果我得到一个退出解决方案,那么我会尽快更新...

【讨论】:

  • 它并不能真正解决问题。如果您遇到此问题,只需在浏览器中打开“检查窗口”并转到“网络”选项卡。如果您在尝试发布页面时看到 404,您应该考虑下面的@sgaith 答案。可能是.htaccess 配置问题和/或mod_rewrite 配置问题。
  • 我需要使用“帖子名称”固定链接,但没有其他解决方案适合我。在此之前我确实最终更改了我的.htaccess 的权限,所以也许这与它有关,但我不确定。使用经典编辑器是唯一适合我的方法。
【解决方案3】:

如前所述更改永久链接设置为我解决了这个问题。如果您将“帖子名称”保留为永久链接设置,则 .htaccess 文件需要可由 wordpress 写入。

或者,可以将以下内容粘贴到 .htaccess 文件的底部。 Mod_rewrite 更改首先从文件底部执行。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

【讨论】:

    【解决方案4】:

    我在本地开发环境中遇到了同样的问题,发现问题是由于重写权限造成的。确保您的 .htaccess 文件具有适当的权限。

    sudo chmod 755 .htaccess
    

    设置权限后,保存您的永久链接设置。如果问题仍然存在,请确保 mod_rewrite 已启用。以下内容适用于 Ubuntu 上的 apache2。

    sudo a2enmod rewrite
    sudo systemctl apache2 restart
    

    如果仍然无法正常工作,您的 apache 配置可能过于严格。以下应该可以在 Ubuntu 上为 apache2 解决问题。编辑 /etc/apache2/apache2.conf 并查找根目录块。它通常是带有 /var/www 的那个,如下所示。您可能会看到 AllowOverride None。只需为您的本地将其更改为如下所示的所有,但您可能希望进行一些研究并在生产服务器上更安全。

    &lt;Directory /var/www/&gt;
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
    &lt;/Directory&gt;

    更改完成后,在 apache 上再次重新启动,一切都会好起来的。

    sudo systemctl apache2 restart
    

    【讨论】:

    • 你拯救了我的一天!谢谢!
    【解决方案5】:

    您的安全问题可能是混合内容(HTTP 和 https 网址)。 步骤1 1. 1. 检查您的 Wordpress URL。转到设置-> 永久链接,然后单击纯文本并保存页面。然后删除错误

    第二步

    1. 检查您的 Wordpress URL。转到设置 -> 常规
    2. 将 Wordpress 地址和站点地址更改为 https://

    这解决了我的问题

    【讨论】:

    • 完美!这是我的问题。谢谢。 +1
    【解决方案6】:

    导航到设置 > 固定链接。选择永久链接结构以发布名称并保存。现在尝试保存您的帖子/页面。

    我在这里分享了屏幕截图供您参考。

    问题应该已经解决了。

    一旦您的问题得到解决,您可以根据需要在永久链接中选择旧选项。

    注意:如果您已经选择了帖子名称,那么您需要选择其他选项来重置永久链接。

    【讨论】:

      【解决方案7】:

      我刚刚安装了经典的编辑器插件,它解决了“响应不是有效的 JSON 响应”的问题。

      【讨论】:

        【解决方案8】:

        在尝试发布我的内容时,我遇到了同样的“不是有效的 JSON 响应”错误。 WordPress 在发布新帖子/页面时似乎会发布 JSON 帖子,因此我检查了开发人员工具中的网络选项卡。如果您检查此 JSON 调用的“响应”选项卡,您可能会看到有关此无效 JSON 响应的更多详细信息。

        在我的情况下(您的情况可能不同),在实际 JSON 数据之前输出了一些已弃用的调试消息并弄乱了响应。修复已弃用的消息发布后再次工作。

        <br />
        <b>Deprecated</b>:  Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in <b>Unknown</b> on line <b>0</b><br />
        <br />
        <b>Warning</b>:  Cannot modify header information - headers already sent in <b>Unknown</b> on line <b>0</b><br />
        {__NORMAL_JSON_DATA_HERE__}

        【讨论】:

          【解决方案9】:

          转到 /etc/nginx/sites-available/ 打开默认文件 --> sudo vi defaultsudo nano default

          将下一行添加到该位置:

          添加评论: #try_files $uri $uri/ =404;

          添加这一行:try_files $uri $uri/ /index.php?$args;

          请看下面用红线描述的截图:

          【讨论】:

            【解决方案10】:

            现在,这里有两个服务器块,第一个在端口 80 上运行。 对于第二个服务器块,有一个端口 443,您应该在其中实现以下代码。

            服务器{
            #ssl 配置
            位置 / {
            # 首先尝试将请求作为文件提供,然后
            # 作为目录,然后回退到显示 404。
            # try_files $uri $uri/ =404; // 注释这个块
            try_files $uri $uri/ /index.php$is_args$args;
            }
            }
            现在退出并重新启动 nginx 服务器。



            ~$ sudo service nginx 重启

            你已经完成了。享受。

            【讨论】:

              【解决方案11】:

              就我而言,这是一个防火墙问题。为网站触发了 ModSecurity 防火墙规则。我联系了托管服务提供商 (NameCheap),他们发现了问题,然后将服务器上触发的规则列入了白名单。然后问题就解决了。

              【讨论】:

                【解决方案12】:

                看起来这个问题还没有解决。

                一种对我有用的解决方法(发布以防它也适用于其他人) - 在我的情况下,我使用的是导致问题的 HTML 块。我所做的是添加一个段落块 > 编辑为 HTML。它暂时解决了这个问题。很遗憾 WP 还没有调查它,似乎它已经发生了一段时间。

                【讨论】:

                  【解决方案13】:

                  我遇到了同样的错误,在我的案例中,原因是页面中使用了简码,而定义简码的函数使用“echo”来输出数据,而不是使用“return”

                  【讨论】:

                    【解决方案14】:

                    在添加和/或更新页面时,除了各种其他随机错误之外,我也收到了相同的错误消息。我在本地开发服务器和虚拟主机上都遇到了错误。当更改为默认主题之一(例如二十九)时,错误将消失。对我来说,问题出在我的页面模板文件中。我注意到在为新创建的页面选择模板时,我会有多个名称相同的选择。

                    我有几个页面模板文件(例如 about-page.php、contact-page.php、services-page.php 等)。在创建这些文件时,由于这些页面中的大多数都是相似的,我只需从现有文件中复制/粘贴以创建一个新的 xxxx-page.php 文件。但是,在其中一些复制的文件(不是全部)中,我忘记修改“模板名称”(在文件顶部)。

                    在我检查并确保我的所有模板文件都有唯一的名称后,JSON 错误就消失了。我所有的其他错误也消失了。我正在使用 Wordpress 5.4。

                    【讨论】:

                      【解决方案15】:

                      我的问题与 .htaccess 相关。我从 LucasBr 关于“.htaccess 配置问题”的评论中得到了提示。由于我已将该站点复制到我的本地开发环境中。我需要更新自定义 mod_rewrite 设置以匹配我的设置。

                      重要的几行是:

                      RewriteBase /
                      

                      RewriteRule . /index.php [L]
                      

                      他们之前被设置为访问子目录站点。

                      【讨论】:

                        【解决方案16】:

                        我的一些自定义插件中有一些回声,所以这也是导致此问题的原因。

                        【讨论】:

                          【解决方案17】:

                          我遇到了持续存在的问题。在找到解决方案之前,我更换了 PHP 8,因为这是自定义 PHP 安装。

                          但没有任何效果。

                          解决方案是在 Drupal 安装过程中找到的。

                          1. 启用 Opcache(但仅适用于 Drupal)
                          2. 允许 Mod 重写,允许所有(在我的 httpd.ini 文件中,Mod Rewrite 出现了 3 次,

                          他们被改成NoneAll 再次none all 这是小写字母,最后一个NoneAll

                          使用httpd -k restart(CMD 作为管理员)重新启动 httpd

                          这已解决。

                          【讨论】:

                            【解决方案18】:

                            由于不同的原因,我与一位客户遇到了同样的问题,但从未将其视为潜在的解决方案。

                            如果您启用了 W.A.F(如 cloudflare 或类似的),副作用之一可能是此错误,因此如果其他解决方案都不起作用,请务必禁用以禁用您的 waf。

                            【讨论】:

                              【解决方案19】:

                              如果您在 Wordpress 中使用 mod security 3,您可能会收到以下消息:

                              发布失败。该响应不是有效的 JSON 响应。

                              要删除它,您需要将此规则添加到名为

                              的排除文件中
                              REQUEST-900-EXCLUSION-RULES-BEFORE-CRS
                              

                              如下:

                              # Remove Publishing failed. The response is not a valid JSON response.
                              SecRule REQUEST_HEADERS:Host "example.com" \
                                   "id:1025,\
                                   phase:2,\
                                   pass,\
                                   nolog,\
                                   chain"
                                   SecRule REQUEST_URI "@beginsWith /wp-json/wp/v2" \
                                       " ctl:ruleRemoveById=933210,ctl:ruleRemoveById=949110"
                              

                              您可能需要更改规则 ID 并将 example.com 更改为您的域名。之后,执行以下操作:

                              sudo nginx -t
                              

                              如果没有检测到问题,重启nginx:

                              sudo service nginx restart
                              sudo systemctl restart nginx
                              

                              【讨论】:

                                【解决方案20】:

                                这是一个永久链接错误。

                                执行以下步骤来修复它(取决于您的场景中的原因),如下所述:https://wordpress786.com/updating-failed-error-message-the-response-is-not-a-valid-json-response/

                                1. 转到settings &gt; permalinks 并再次保存它们
                                2. 如果您在 nginx 上,请转到站点 nginx conf 文件并确保它包含 wordpress 永久链接的规则(wordpress 的通常 nginx 配置,问我如果感到困惑)
                                3. 如果您对 conf 文件进行任何编辑,请重新启动 nginx

                                【讨论】:

                                  【解决方案21】:

                                  如果您在上传图片时遇到问题,请按此操作:https://navinrao.com/the-response-is-not-a-valid-json-response/

                                  我在更新普通文本时也遇到了这个问题。 我面临的问题是由于我的链接 () 中有 javascript:void(0) 关键字。

                                  请确定您的内容是否包含包含 javascript 的关键字 更新前。

                                  <a href="javascript:void(0)" target="_blank" title="Linkedin" class="social-color-3"><i class="fa fa-linkedin" aria-hidden="true"></i></a>
                                  

                                  在我删除 javascript:void(0) 后;它工作正常。 玩得开心:)

                                  【讨论】:

                                    【解决方案22】:

                                    尝试删除所有指向 WordPress 网站的重定向,包括子域。

                                    【讨论】:

                                      猜你喜欢
                                      • 2020-07-10
                                      • 2023-03-22
                                      • 2021-09-23
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 2017-01-15
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 1970-01-01
                                      相关资源
                                      最近更新 更多