“headers already sent”错误的介绍与解决办法
在升级WordPress到新版本或者全新安装之后,在浏览器里可能会遇到“Warning: Cannot modify header information – headers already sent by output started at path/blog/wp-config.php:34”这样的错误。
出这个错误是因为“header('Content-Type: text/html; charset=UTF-8')”发送头之前不能有任何输出,空格也不行。需要将header之前的空格去掉,或者去掉其他输出的东西。如果它上面include其他文件了,还要检查其他文件里是否有输出。
WordPress博客安装界面显示异常可通过修改wp-config.php文件编码为ANSI解决。具体步骤如下:问题原因是使用记事本编辑wp-config.php文件时,默认保存的编码格式可能为UTF-8含BOM头,导致文件开头存在不可见字符,WordPress在加载时会优先读取这些字符,触发“headers already sent”错误。
“Warning”在PHP里属于比较轻的错误提示,通常不会严重影响程序的正常运行。“Warning: chdir”这个警告提示“No error”,那么可能是对于chdir这个函数,服务器端权限安全设置导致的。“Warning: Cannot modify header information”这种警告在PHP里比较常见,原因也有多样。
解决办法:
- 删掉wp-config.php里面多余的空格、空行以及其他无用信息。可通过FTP下载wp-config.php文件进行操作。
- 检查有“<?php”。
- 基于上面这些限制,执行setcookie函数时,常会碰到“Undefined index”“Cannot modify header information headers already sent by”等问题。解决“Cannot modify header information headers already sent by”这个错误的方法是在产生cookie前,先延缓资料输出至浏览器,因此,可以在程式的最前方进行处理。
出现这种情况和数据库没有关系,可能的原因大概有二:
- header函数之前,不能有任何输出,包括html代码、css代码、js代码、空格、换行等客户端代码,并且不能有php中的echo、print、print_r等等输出代码。
- 文件格式错误,如勾选了签名,这种情况一般是出现在utf-8编码的文件中,需要先检查。
关键注意事项:
- header函数调用时机:确保在调用header前无任何输出,包括空格、HTML标签,否则会触发“Headers already sent”错误。
- 安全性验证:若图片URL来自用户输入或动态生成,需严格过滤以防止开放重定向漏洞。本例中URL为硬编码,风险较低。
- 错误处理优化:实际应用中,可添加默认图片或404状态码处理。
另外,对于PHP的session功能,存在一些问题。比如错误提示“Warning: Cannot send session cookie - headers already sent”等,本文将这些问题做一个简单的汇总,以便大家查阅。





