如何修复PHP中的“标头已发送”错误-创新互联
运行脚本时,出现如下错误:
站在用户的角度思考问题,与客户深入沟通,找到方城网站设计与方城网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站建设、成都网站设计、企业官网、英文网站、手机端网站、网站推广、域名与空间、虚拟空间、企业邮箱。业务覆盖方城地区。警告:不能更改头信息-已经( 输出在/some/file.php:12开始 )在/some/file.php发送上线23头
错误消息中提到的行包含header()和setcookie()调用。
这可能是什么原因? 以及如何解决?
一个简单的提示:在脚本中,就在第一个
我之前曾多次收到此错误,并且可以肯定所有PHP程序员至少一次收到过此错误。
可能的解决方案1
该错误可能是由文件开头之前或文件结尾之后的空格引起的。这些空格不应在此处。
例)这里应该没有空白
echo "your code here";
?>
THERE SHOULD BE NO BLANK SPACES HERE
检查与导致此错误的文件关联的所有文件。
注意: 有时,像gedit(默认的Linux编辑器)之类的EDITOR(IDE)在保存文件上添加一个空行。 这不应该发生。 如果您使用的是Linux。 您可以使用VI编辑器删除页面末尾?>之后的空格/行。
可能的解决方案2:如果不是您这种情况,请使用ob_start输出缓冲:
这将打开输出缓冲,并且将在缓冲页面之后创建标题。
代替下面的行
//header("Location:".ADMIN_URL."/index.php");
写
echo("");
要么
?>
肯定会解决您的问题。 我遇到了同样的问题,但通过上述方式编写标题位置解决了。
另一个不好的做法可能会引起此问题,尚未说明。
请参见以下代码段:
事情还好吧?
如果“ a_important_file.php”是怎么办:
----------This is the end of the an_important_file-------------------
这行不通吗? 为什么?因为已经生成了新行。
现在,尽管这不是常见的情况,但是如果您使用的是MVC框架,该框架会在将内容移交给控制器之前加载大量文件? 这并非罕见的情况。 为此做好准备。
从PSR-2 2.2开始:
所有PHP文件都必须使用Unix LF (linefeed) line ending 。
所有PHP文件都必须以single blank line结尾。
only php包含only php文件中必须omitted ?>标记
相信我,遵循这些标准可以为您节省很多时间:)
通常,当我们在回显或打印后发送标题时,会出现此错误。 如果在特定页面上发生此错误,请确保在调用start_session()之前该页面没有回显任何内容。
不可预测的错误示例:
//your page content
再举一个例子:
结论:在调用session_start()或header()函数header()甚至是空格或换行符session_start()之前,请勿输出任何字符
分享标题:如何修复PHP中的“标头已发送”错误-创新互联
本文网址:http://scyanting.com/article/gjpjs.html