我正在使用PHP 4.3.11,当我执行header总是响应时出现这样的错误
警告:无法修改标题信息 - 已在 d:\ folder \ file.php中发送的标题(在d:\ folder \ file.php:1处开始输出)在线 2
警告:无法修改标题信息 - 已在 d:\ folder \ file.php中发送的标题(在d:\ folder \ file.php:1处开始输出)在线 3 当前PHP版本:4.3.11
我用来生成此错误的代码是
<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
echo 'Current PHP version: ' . phpversion();
// prints e.g. '2.0' or nothing if the extension isn't enabled
echo phpversion('tidy');
?>
在php标签之前或之后没有空格或换行符,5.x版本中的相同代码只返回预期的php版本。
有任何线索吗?
提前致谢
修改 解决了!:我用西欧编码打开了文件并删除了BOM并且它有效。谢谢大家的帮助!
答案 0 :(得分:5)
确保PHP块之前没有空行和不可见字符(例如UTF BOM),以便<?php
真正是文件中的第一个。
答案 1 :(得分:5)
文件开头是否有UTF BOM?
答案 2 :(得分:2)
如果您的文件除了php代码之外不包含任何其他内容,建议跳过php结束标记以避免文件末尾出现空格
答案 3 :(得分:0)
您获得的错误意味着整个脚本(包括其他文件)在调用header()函数之前发送一些输出。
您应该修改所有文件并查看是否有任何文件正在输出(使用echo()或print()),或者如果您在最后一个结束标记后错过了一些空格?&gt;
答案 4 :(得分:0)
这不太可能,但是有可能在php.ini中定义auto_prepend_file(也可能是.htaccess)。
http://at2.php.net/manual/en/ini.core.php - 这在每个脚本的开头都像require()
。您可以通过查看phpinfo();
输出来查看此内容。
但我也认为问题是utf-8 BOM。