我在当前的一个项目中遇到了问题。如果有人对此类问题有经验,请分享。虽然我尝试使用以下脚本:
标题('内容类型:image / jpeg');
以下错误显示:
警告:无法修改标题信息 - 第89行/location/controller/Captcha.php中已经发送的标题(/location/test.php:1开始输出)
我使用过 ob_clean();在标题之前(' Content-Type:image / jpeg'); 功能来清理缓冲区。但不是傻逼。 我也检查php文件中的任何输出或换行符,但一无所获。
请问有人给我解决方案吗?
答案 0 :(得分:1)
基本上,当在php标记之外存在任何空格或新行或在标题函数之前打印的任何内容时,会出现此类问题。但在我的项目问题中,除了test.php文件之外,我的所有php文件都以 ANSI编码保存。 test.php文件以 utf-8编码保存。
虽然captcha.php文件试图访问test.php,它会自动打印一些特殊字符(我不知道为什么)。
当我将编码转换为test.php的ANSI时,我的项目问题就解决了。
感谢弗雷德的回复。
答案 1 :(得分:0)
如果没有看到完整的代码,您可能会在<?php
标记,HTML或其他类型的“输出”之外或之上留下空格,甚至可能是byte order mark
<?php
echo "Correct";
// or vvv, but not with echo
// header("Location: http://www.example.com/");
?>
(space)
(space) <?php
echo "Incorrect";
header("Location: http://www.example.com/");
?>
<div align="center">Text</div> <!-- HTML -->
<!-- comment tags also considered as output -->
<?php
echo "Incorrect";
header("Location: http://www.example.com/");
?>
(byte order mark) // aka BOM which is invisible but still present
<?php
echo "Incorrect";
header("Location: http://www.example.com/");
?>
有关header()
功能的更多信息,请访问PHP.net网站: