php无法显示,因为它包含错误


php cannot be displayed because it contains errors

运行脚本时出现以下错误php cannot be displayed because it contains errors

脚本获取一个文件,调整大小,将其输出到屏幕和一个文件。

url示例:localhost/testimage.php?img=img_592_121_200.jpg

我阅读了大多数帖子,并尝试了建议的解决方案。所有失败的

该文件不会输出到屏幕/浏览器,但可以保存到文件中。

这是代码,我去掉了所有的空白和空行。并将文件名硬编码在脚本中

**我开始怀疑这是我的设置,但甚至不确定如何/从哪里开始寻找

编辑:简化为只输出到屏幕

testimage.php

<?php
//session_start();
//ob_start();
ini_set("display_errors", "1");
error_reporting(E_ALL); 
Header('Content-type:image/jpeg');
//$cacheFile="mypicXXX.jpg";
//$cache_dir="cache/1/592/";
$img_dir="webspace/1/592/";
$img="img_592_121.jpg";
$id="$img_dir$img";
$src=imagecreatefromjpeg($id);
$new_width=200;
$new_height=77;
$width=600;
$height=1001;
$w_src=600;
$h_src=1001;
$img=imagecreatetruecolor($new_width,$new_height);
imagecopyresampled($img,$src,0,0,0,0,$new_width,$new_height,$w_src,$h_src);
imagejpeg($img,NULL,45);
//$cacheFile=$cache_dir.$cacheFile;
//imagejpeg($img,$cacheFile,45); 
imagedestroy($src);
imagedestroy($img);
//ob_end_flush();
?>

已修复。修复方法(至少对我来说)是将文件保存为"UTF-8-NO NOM"。在我拥有"UTF-8"之前

整个文件格式让我迷路了,我需要在这几天读一读

谢谢你的帮助!!!

您是否检查过在标头之前没有发送输出?你可以尝试几件事:

  1. 将您的header()函数移到顶部
  2. 删除缓存(ob_start),看看是否可以先让它在没有缓存的情况下工作
  3. 当您使用ob_start时,我想您还想使用ob_end_flush();最后
  4. 尝试使用NULL作为imagejpeg()的第二个参数来进行RAW输出,而不是写入文件。(可能与写入权限有关)

更新您确定已检查指向的文件是否存在/或路径是否有效?这在我的本地主机上运行,运行默认的xample安装(PHP3.5.1)

ini_set("display_errors", "1");
error_reporting(E_ALL);
Header('Content-type:image/jpeg');
//$cacheFile="mypicXXX.jpg";
//$cache_dir="cache/1/592/";
$img_dir="webspace/1/592/";
$img="test.jpg";
$src=imagecreatefromjpeg($img);
$new_width=200;
$new_height=77;
$width=600;
$height=1001;
$w_src=600;
$h_src=1001;
$img=imagecreatetruecolor($new_width,$new_height);
imagecopyresampled($img,$src,0,0,0,0,$new_width,$new_height,$w_src,$h_src);
imagejpeg($img,NULL,45);
//$cacheFile=$cache_dir.$cacheFile;
//imagejpeg($img,$cacheFile,45);
imagedestroy($src);
imagedestroy($img);