如何在PHP中正确设置标头

时间:2015-10-17 04:54:58

标签: php html

我正在尝试在我的一个名为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>

但是这导致我网站上的所有内容都消失了,并在左下角显示了一直显示的图片错误图标。像这样:

enter image description here

有人知道如何解决这个问题吗?

1 个答案:

答案 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;
?>