php header()函数跳转无效解决
If you got this message: "Warning: Cannot modify header information - headers already sent by ...."
如果在执行php程序时看到这条警告:"Warning: Cannot modify header information - headers already sent by ...."
Few notes based on the following user posts:
有以下几种解决方法:
1. Blank lines (空白行):
检查有 后面没有空白行,特别是include或者require的文件。不少问题是这些空白行导致的。
2. Use exit statement (用exit来解决):
Use exit after header statement seems to help some people
在header后加上exit();
header ("Location: xxx"); exit();
3. PHP has this annoying problem, if your HTML goes before any PHP code or any header modification before redirecting to certain page, it ll said "Warning: Cannot modify header information - headers already sent by ...." Basically anytime you output to browser, the header is set and cannot be modified. So two ways to get around the problem:
3a. Use Javascrīpt (用Javascrīpt来解决):
echo "self.location( file.php ); īpt>"; ?>
Since it s a scrīpt, it won t modify the header until execution of Javascrīpt.
可以用Javascrīpt来代替header。另外需要注意,采用这种方法需要浏览器支持Javascrīpt.
3b. Use output buffering (用输出缓存来解决):---本人用这种方法解决的!已证实可以!
... HTML codes ...
就像上面的代码那样,这种方法在生成页面的时候缓存,这样就允许在输出head之后再输出header了。本站的许愿板就是采用这种方法解决的header问题。
4.set output_buffering = On in php.ini (开启php.ini中的output_buffering )
set output_buffering = On will enable output buffering for all files. But this method may slow down your php output. The performance of this method depends on which Web server you re working with, and what kind of scrīpts you re using.
这种方法和3b的方法理论上是一样的。但是这种方法开启了所有php程序的输出缓存,这样做可能影响php执行效率,这取决于服务器的性能和代码的复杂度。
上一篇: nginx如何去掉php后缀名
下一篇: pathinfo读取不到中文的有关问题
推荐阅读
-
php中mail函数发送邮件失败的解决方法
-
php出现内存位置访问无效错误问题解决方法
-
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
-
PHP is_subclass_of函数的一个BUG和解决方法
-
php5.2以下版本无json_decode函数的解决方法
-
MSSQL报错:参数数据类型 text 对于 replace 函数的参数 1 无效的解决办法
-
php 字符串中的 换行符无效、不能换行的解决方法
-
PHP 使用header函数设置HTTP头的示例解析 表头
-
浅析php header 跳转
-
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法