我在localhost上构建我的站点(在Windows上运行wamp),当我将它上传到我的服务器时,我总是得到 “无法修改标题信息 - 标题已发送”
据我所知,不应该有任何空白行和任何空白,通常这样做。但现在我需要在发送标题后重定向某人,如何让我的服务器像我的本地主机一样?
我正在使用cpanel和WHM:
cPanel 11.25.0-R42399 - WHM 11.25.0 - X 3.9 CENTOS 5.4 x86_64 virtuozzo on vps
我将不胜感激任何帮助
答案 0 :(得分:2)
简而言之,您需要阻止PHP在您到达想要使用header()函数的位置之前向浏览器输出任何内容。
这应该通过仔细的编程实践来完成,其中“无空行”是一个,或者将PHP的输出存储在输出缓冲区中,并且只在您准备好它时才输出。
请参阅ob_start()和ob_flush()方法。您在应用程序的开头使用ob_start()。这会禁用输出并将其存储到缓冲区中。当您准备好开始输出时,使用ob_flush()并且PHP会将缓冲区的内容发送到浏览器,包括在此之前设置的标头。如果不调用ob_flush(),则在脚本末尾输出(刷新)缓冲区。
它在WAMP开发环境中运行的原因很可能是默认情况下php.ini中已经启用了输出缓冲。这些一体化软件包通常会为前4k字节左右启用默认缓冲区。但是,通常最好在代码中显式启动和刷新缓冲区,因为这会强制更好的编码实践。
答案 1 :(得分:0)
那么, 我想通过更多思考和更好的编程,您可以设法在编写任何HTML之前保留所有重定向。
旧规则解决了这个问题...
答案 2 :(得分:0)
@ user31279:我所知道的最快最肮脏的方法是使用@
来抑制警告,例如
@header('Location: some-other-page.php');