我在php中得到了这样的警告:
Cannot modify header information - headers already sent by (output started at当我单独安装mysql、apache和php时,但当我使用Wamp时,该警告不存在,页面会优雅地重定向。
我已经尝试将错误报告设置为只显示错误而不显示警告,发生的情况是警告没有显示,但页面也没有重定向。
我知道这已经被认为是不好的做法,但我的代码库有很多这样的代码,修改它们可能会给代码带来新的bug。有没有办法在php中完全忽略这个警告?
发布于 2012-04-13 17:54:58
避免这个问题的经典方法是使用output buffering、ob_start()和ob_flush()。在任何输出之前开始缓冲,并显式地以刷新结束,或者它可以自动完成。这会捕获任何输出,而不是打印它,因此任何输出的标头都是在任何可见内容之前完成的。
修复从错误消息中的文件名输出的错误是解决这个问题的最好方法。在不需要的时候从文件中删除结尾的'?>‘可能会有所帮助。
发布于 2012-04-13 17:47:04
这是一种可怕的做法,但就是这样
error_reporting(0);在你的脚本的开头。否则在php.ini中设置
display_errors = Off编辑--可能在重定向之前你正在输出一些东西。我曾经花了三天的时间调试它,原因有时是文件末尾的空格,或者在重定向之前将一些HTML输出到浏览器。
我通常不会关闭php标签来避免这一点。
发布于 2012-04-13 17:50:40
即使你没有显示你的错误,你的应用程序也不会工作。这是因为就像错误所说的,报头已经被发送了。这意味着:浏览器在服务器上请求你的php文件。然后,服务器执行此操作并发回所得到的html。这个错误告诉你,在你已经发送了php文件的结果之后,你正在向浏览器发回一些东西。因此,我建议您尝试修复您收到的错误,而不是不显示它。
https://stackoverflow.com/questions/10138604
复制相似问题