首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何忽略php中的重定向错误

问如何忽略php中的重定向错误
EN

Stack Overflow用户
提问于 2012-04-13 17:44:57
回答 5查看 1.5K关注 0票数 0

我在php中得到了这样的警告:

代码语言:javascript
复制
Cannot modify header information - headers already sent by (output started at

当我单独安装mysql、apache和php时,但当我使用Wamp时,该警告不存在,页面会优雅地重定向。

我已经尝试将错误报告设置为只显示错误而不显示警告,发生的情况是警告没有显示,但页面也没有重定向。

我知道这已经被认为是不好的做法,但我的代码库有很多这样的代码,修改它们可能会给代码带来新的bug。有没有办法在php中完全忽略这个警告?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-04-13 17:54:58

避免这个问题的经典方法是使用output buffering、ob_start()和ob_flush()。在任何输出之前开始缓冲,并显式地以刷新结束,或者它可以自动完成。这会捕获任何输出,而不是打印它,因此任何输出的标头都是在任何可见内容之前完成的。

修复从错误消息中的文件名输出的错误是解决这个问题的最好方法。在不需要的时候从文件中删除结尾的'?>‘可能会有所帮助。

票数 3
EN

Stack Overflow用户

发布于 2012-04-13 17:47:04

这是一种可怕的做法,但就是这样

代码语言:javascript
复制
error_reporting(0);

在你的脚本的开头。否则在php.ini中设置

代码语言:javascript
复制
display_errors = Off

编辑--可能在重定向之前你正在输出一些东西。我曾经花了三天的时间调试它,原因有时是文件末尾的空格,或者在重定向之前将一些HTML输出到浏览器。

我通常不会关闭php标签来避免这一点。

票数 1
EN

Stack Overflow用户

发布于 2012-04-13 17:50:40

即使你没有显示你的错误,你的应用程序也不会工作。这是因为就像错误所说的,报头已经被发送了。这意味着:浏览器在服务器上请求你的php文件。然后,服务器执行此操作并发回所得到的html。这个错误告诉你,在你已经发送了php文件的结果之后,你正在向浏览器发回一些东西。因此,我建议您尝试修复您收到的错误,而不是不显示它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10138604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档