2015-05-08 100 views
2

我一直在使用以下PHP腳本多年。突然,幾個星期前,它停止了工作。它創建的圖像又嵌入到網頁中,顯示爲斷開的鏈接。如果我刪除內容類型行(發送文本),圖像文本似乎發送正常。我有一個單獨的腳本來獲取圖像,使用這個腳本來裁剪它們,然後在本地保存輸出。我查看了保存的.png文件。他們都有一個文件大小(30K左右)。圖像裁剪腳本現在顯示損壞的鏈接

我擔心我的託管服務已更新PHP並破壞了某些內容(再次)。任何人都知道發生了什麼?

#!/usr/bin/php -q 
<? 
$w=$_GET['w']; 
$h=isset($_GET['h'])?$_GET['h']:$w; 
$x=isset($_GET['x'])?$_GET['x']:0; 
$y=isset($_GET['y'])?$_GET['y']:0; 
$filename="http://".$_GET['src']; 
//echo $filename; 
$result_array = getimagesize($filename); 
//exit(); 

if ($result_array !== false) { 
    $mime_type = $result_array['mime']; 
    switch($mime_type) { 
     case "image/jpeg": 
      header('Content-type: image/jpeg'); 
      $image = imagecreatefromjpeg($filename); 
      break; 
     case "image/gif": 
      header('Content-type: image/gif'); 
      $image = imagecreatefromgif($filename); 
      break; 
     case "image/png": 
      header('Content-type: image/png'); 
      $image = imagecreatefrompng($filename); 
      break; 
     case "image/bmp": 
      header('Content-type: image/bmp'); 
      $image = imagecreatefrombmp($filename); 
      break; 
     default: 
      echo "Unsupported image type"; 
    } 

    $resized = imagecreatetruecolor(1200, 1200); 
    imagecopyresampled($resized, $image, 0, 0, 0, 0, 1200, 1200, imagesx($image), imagesy($image)); 
    $crop = imagecreatetruecolor($w,$h); 
    imagecopy ($crop, $resized, 0, 0, $x, $y, $w, $h); 
    imagepng($crop); 
} else { 
    echo "file is not a valid image file"; 
} 

?> 
+0

如果您在'content-type:text/plain'時獲得響應數據,則請求格式良好。但是,對於圖像MIME類型,返回的實際數據可能無法針對回覆MIME類型正確格式化。數據文件被破壞的可能性有多大? –

回答

1

啊,舊的「如果你問一個關於堆棧溢出的問題,你會在一分鐘後找出問題」,格言再次成爲現實。

幾乎肯定我的主機更新了PHP。由於某種原因,#!/usr/bin/php -q行被添加到PNG文件的開頭。我刪除了這條線,一切都恢復了。