首页 / 技术 / 正文

处理解决WordPress登录出现“Cookies因预料之外的输出被阻止”之问题

2017年01月13日 4 条评论 ... 技术

WordPress 博客程序登录的时候在登录页面中出现“Cookies因预料之外的输出被阻止。”的提示,其他连带的症状还有:会在页面顶部输出错误代码行的提示,错误信息基本上是“headers already sent by”,无法使用wordpress密码找回功能,进入后台后无法在线安装插件等不正常现象发生。

错误提示

解决方法

出现这种问题的最常见的是使用了阿里云的虚拟主机用户,主要原因是服务器没有开启“输出缓冲区数据块”。

所以解决问题的方式是开启之,阿里云虚拟主机的用户可以访问阿里云后台,进入虚拟主机的管理页面,然后点击“高级环境设置”->“PHP.ini设置”,在PHP环境参数设置中点击开启“输出缓冲区数据块设置”,然后保存即可。

设置缓存

对于其他Apache服务器,可以直接修改 php.ini 文件来开启。编辑 php.ini 文件,找到 output_buffering ,设置值为 ON ,保存后重启 Apache,即可生效。

什么是输出缓冲区数据块

在没有开启缓冲区的情况下,执行 header() 函数的时候,浏览器收到之后会直接执行,如果后续再次使用 header 方法,则浏览器会提示,我已经收到过 header 了,不要在发过来了,就会提示“headers already sent by” 的错误。如果这个时候开启了 php 的缓存,则 header 数据会首先存放在缓存中,等到执行完成全部代码后,一次性全部发送给浏览器,就会避免出现多次发送 header 的问题。

WordPress 出现这种情况,主要是主题的 function.php 文件中有出现过重定向的代码,如果没有开启缓存而执行到了重定向的代码,则会报错。比如说如果主题中设置了后台登录保护代码,就可能会出现这个问题。简单非插件隐藏WordPress后台-防止暴力破解

 

同样,开启输出缓冲区功能可以解决在手机版 WordPress 无法登陆后台的错误。无法通过该URL读取WordPress站点。

wordpress手机版错误提示

4 条评论

Loading...
  1. 姜辰

    学习了,如果以后遇到这个问题可以借鉴下了。

    2017-01-13 [回复]
  2. Code

    有一些虚拟主机架设的,没有这个设置PHP.ini选项。
    最暴力的方法,进入FTP,把当前使用中的theme主题文件夹删除即可解决。 :twisted:
    我之前遇到过,暴力解决就好了,在主机里没有找到PHP.ini到底在哪里

    2017-01-13 [回复]
  3. Love

    嗯,今天又遇到了,郁闷至极 :sad:
    通过Code的方法,暴力删除最近安装的插件和主题,未解决
    在控制台的PHP.ini中添加 output_buffering = “4096” 后可以打开了

    2017-02-23 [回复]
  4. Love

    对了,某插件的 “ 移除中文本地化产生的不必要数据库查询 ”这个也会导致这种问题
    也有可能不兼容部分服务器环境?

    2017-02-23 [回复]

发布评论