问题1:
session_start()
函数调用生成了一个会话.该会话干扰了RESTAPI及环回请求。在做出任何HTTP请求前,该会话必须由session_write_close()
函数关闭.
问题2:
RESTAPI是WordPress及其他应用与服务器通信的一种途径。例如区块编辑器页面,它依赖REST来显示及保存您的页面和文章.
RESTAPI调用返回了预料之外的结果:
(404)<html><head><title>404未找到</title></head><body><h1><h1>404未找到</h1><h1><hr><调用返回了预料之外的结果>nginx</Center></body></html>。
出现上面两个问题建议先排查下面几种情况:
-
REST API 未启用:请确保已经启用了 WordPress 的 REST API。可以通过前往“设置”>“写文章”并确保“启用WordPress的REST API”选项已勾选来启用它。
-
主题不支持 REST API:如果您正在使用的主题不支持 WordPress 的 REST API,则会出现 404 错误。请查看主题文档或联系主题作者以了解其是否支持 REST API。
-
主题中的自定义代码导致:如果主题中包含自定义代码,则可能存在与 REST API 相关的代码导致。请尝试禁用自定义代码并检查是否可以正常工作。
-
插件导致:如果你安装了其他插件,也可能会导致与 API 。尝试禁用所有插件,并慢慢地逐一启用它们,找到导致问题的插件。
第一个问题可能是因为在WordPress的REST API请求或执行环回请求之前,有一个被开启但未关闭的会话。这可能会干扰REST API和环回请求导致出现问题。
要解决这个问题,可以尝试添加下面代码到您的主题的 functions.php 文件中,在创建会话后立即关闭它:
add_action( 'init', function() {
if ( session_id() ) {
session_write_close();
}
} );
添加完将在WordPress的初始化期间自动运行。通过检查当前是否存在会话来关闭会话,并在完成相关任务后尽快关闭,以确保没有Open session会干扰REST API 和环回请求。