【发布时间】:2012-10-18 13:00:11
【问题描述】:
我一直在我的本地机器上开发一个 WordPress 网站并在我自己的服务器上托管。一切运行完美。
自从移至客户端服务器后,编辑器中的某些功能已停止工作。具体来说,那些涉及 ajax 请求的。我已经调查过了,它在admin-ajax.php 中以die(0) 退出,代码如下:
// Require an action parameter
if ( empty( $_REQUEST['action'] ) )
die( '0' );
进一步阅读看到$_REQUEST 在wp_magic_quotes() 在wp-includes/load.php 中被重置如下:
$_REQUEST = array_merge( $_GET, $_POST );
服务器上的 PHP 设置可能导致$_REQUEST 在wp_magic_quotes() 之后在ajax-admin.php 期间保持空白的问题是什么?
如果我编辑 ajax-admin.php 以添加 $_REQUEST 重置:
$_REQUEST = array_merge( $_GET, $_POST );
// Require an action parameter
if ( empty( $_REQUEST['action'] ) )
die( '0' );
...那么编辑器中的所有 ajax 都可以正常工作。
但我不想编辑核心文件,所以想知道如何更改服务器设置以使用标准文件?
设置详情:
WordPress 3.4.2
使用 Apache 2.0 处理程序的 PHP 5.4.5
Unix服务器
PHP 设置:
request_order:没有价值
variables_order: GPCS
任何帮助表示赞赏。
【问题讨论】:
-
check the docs是个好主意
-
暂时禁用所有插件和任何非默认主题。你还有问题吗?您使用的是哪个 Wordpress 和哪个 PHP 版本?
-
还在顶部放置一个
var_dump($GLOBALS);,并以纯文本形式查看它返回的内容。超级全局变量是否像您的本地系统一样填充? -
@hakre 问题出现在默认主题且没有插件的情况下。这是服务器问题。
-
请将您的 PHP + Wordpress 版本添加到您的问题中。此外,如果您有关于服务器(至少是操作系统)的详细信息,对未来的用户来说会很好。检查 cmets/answers 中概述的 ini 设置。他们应该帮助解决这个问题。
标签: php ajax wordpress request