gpt4 book ai didi

php - Ajax 被 Wordpress 警告 : solve trough ob_start()? 破坏

转载 作者:搜寻专家 更新时间:2023-10-31 22:12:23 26 4
gpt4 key购买 nike

我正在为 WordPress 写一个插件。我的目标是让它为每个人服务。一些页面使用 ajax 响应。一些用户激活了 WP_DEBUG 常量,该常量显示来自主题和其他插件的错误和警告。

这破坏了我的 Ajax PHP,因为我包含了 Wordpress 核心,然后 WP 可以在一些博客中显示警告!

我解决这个问题的老方法是:

<?php
ob_start();
//The wordpress core require
ob_end_clean();

//Now the ajax response:
echo '0';
?>

但是,一位用户报告了一个非常奇怪的错误:ajax 页面没有响应,仅在 Opera 中有效,Google Chrome 显示:错误 330 (net::ERR_CONTENT_DECODING_FAILED):

在用户网络服务器中挖掘,我发现 WP 配置或插件或其他使用 ob_start("ob gzhandler")。

ob_get_status(true) 显示在我工作的网络服务器中:

Array
(
[0] => Array
(
[chunk_size] => 4096
[type] => 1
[status] => 0
[name] => default output handler
[del] => 1
)

[1] => Array
(
[chunk_size] => 0
[size] => 40960
[block_size] => 10240
[type] => 1
[status] => 0
[name] => default output handler
[del] => 1
)

)

在有问题的网络服务器中:

Array
(
[0] => Array
(
[chunk_size] => 4096
[type] => 1
[status] => 0
[name] => default output handler
[del] => 1
)

[1] => Array
(
[chunk_size] => 0
[size] => 40960
[block_size] => 10240
[type] => 1
[status] => 0
[name] => default output handler
[del] => 1
)

[2] => Array
(
[chunk_size] => 0
[size] => 40960
[block_size] => 10240
[type] => 1
[status] => 0
[name] => ob_gzhandler
[del] => 1
)

)

我的用户网络服务器中的顺序是:

  • 我的代码调用 ob_start()
  • 包含WP核心,WP初始化所有并调用ob_start("ob gzhandler")
  • 当我的代码调用 ob_end_clean() 时失败。

我需要一种安全的方法来隐藏 WP 警告,但我无法破坏启用 GZIP 的配置(我怀疑是某些插件)。如果不可能,我宁愿在警告系统中留下中断 ajax 并忘记缓冲方法。

我认为一个干净的方式可能是:

$buffers = count(ob_get_status(true));
ob_start();
//The wordpress core require
if (count(ob_get_status(true)) == $buffers + 1) {
ob_end_clean();
} else {
ob_flush();
}
//Now the ajax response:
echo '0';

但我担心通过 PHP 版本和配置、WP 版本、插件和配置的一些无限组合会破坏某些人。您认为解决这个问题的好方法是什么?

最佳答案

如果您在插件(或 functions.php)所需的任何文件中的打开 php 标记前留下任何空格或行,它将破坏 Wordpress AJAX。

打破 AJAX:

 <?php

不会破坏 AJAX:

<?php

关于php - Ajax 被 Wordpress 警告 : solve trough ob_start()? 破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11479697/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com