我正在尝试在我的一个名为resizeImage.php的文件中设置header('Content-Type: image/jpeg');
(我按照http://php.net/manual/en/function.imagecopyresampled.php的教程进行操作)。我一直收到这个错误:Warning: Cannot modify header information - headers already sent by (output started at /home/sites/aejhyun.com/public_html/Syrian Project/index.php:557)
。所以我做了一些研究,偶然发现了一篇名为How to fix "Headers already sent" error in PHP的非常好的帖子并查看了http://www.w3schools.com/php/func_http_header.asp。我试着做教程告诉我要做的事,但没有一个能奏效。
为了给你一些上下文我的resizeImage.php
代码是这样的:
<?php
$directory = "uploads/";
$images = glob($directory."*.jpeg");
header('Content-Type: image/jpeg');
foreach($images as $filename) {
// Set a maximum height and width
$width = 200;
$height = 200;
// Get new dimensions
list($width_orig, $height_orig) = getimagesize($filename);
$ratio_orig = $width_orig/$height_orig;
if ($width/$height > $ratio_orig) {
$width = $height*$ratio_orig;
} else {
$height = $width/$ratio_orig;
}
// Resample
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
// Output
imagejpeg($image_p, null, 100);
}
?>
我一直收到错误,我尝试将ob_start()
添加到我的php文件中,但仍然导致错误。我尝试从我的php文件中删除header('Content-Type: image/jpeg');
,我尝试将其一直添加到index.php
文件的顶部,如下所示:
<?php
header('Content-Type: image/jpeg');
?>
<!doctype html>
但是这导致我网站上的所有内容都消失了,并在左下角显示了一直显示的图片错误图标。像这样:
有人知道如何解决这个问题吗?
答案 0 :(得分:0)
header()
必须在发送任何实际输出之前调用。
但如果你仍然有错误这意味着用文件保存的php文件,你应该将php文件保存为utf8 without Bom
<?php
/* This will give an error. Note the output
* above, which is before the header() call */
header('Location: http://www.example.com/');
exit;
?>