2009-08-28 56 views
0

我有一個代碼,可以對圖像進行篡改並將其發送到瀏覽器。PHP創建圖像文件,但只適用於本地開發,而不適用於遠程服務器

但它不能正常工作......只有當我要求它將圖像輸出到文件而不是瀏覽器時。

我不認爲問題是我的代碼,因爲這個問題只發生在真正的服務器上;在我的電腦裏它的工作很完美。

代碼:

$img = $_GET['img']; 

ini_set('allow_url_fopen', 'on'); 

$info = getimagesize($img); 
header('Content-type: '.image_type_to_mime_type($info[2])); 
Fotos::redimensiona($img, null, Fotos::MINIGAL_WIDTH, Fotos::MINIGAL_HEIGHT, false); 

照片:: redimensiona():

//[...] a whole bunch of code calculating dimensions, they just works 
// $funcImage is like 'imagejpeg'/'imagepng'/'imagegif', depends on file 
if ($arquivo) { 
    $funcImage($thumb, "$final.$ext"); 
    return "$final.$ext"; 
} 
else { 
    $funcImage($thumb); 
} 

記住:工作地方發展,但不是做遠程Web服務器上。

[編輯]
如果我評論的header線,二進制代碼印;並且如我所料,當我更改原始圖像時,此代碼會發生變化。
但隨着header火狐顯示我的網頁的URL(如http://www.sabianoar.com.br/novosabia/inc/phpImg.php?img=awful_escaped_long_path.jpeg),如果我這樣做CTRL+I它告訴我這是一個0x0大小的JPEG,像10kb。
歌劇顯示我一個空的圖像,因爲它會怎麼做,如果我放在了錯誤的src<img>,即

[EDIT2] EyeOfGnome說:「沒有一個JPEG文件:始於0xef爲0xBB」當我嘗試保存並打開輸出(通常將其保存到.jpeg文件中)。

+0

當「無法正常工作」時會發生什麼?它錯誤嗎?沒有輸出?破碎的圖像? – NSSec 2009-08-28 05:10:08

+0

看看編輯。 =]我剛剛添加了這個信息... – igorsantos07 2009-08-28 05:10:54

回答

3

您的代碼在開始時輸出BOM。如果在<?php之前包含物料清單,請從遠程Web服務器打開您的代碼並檢查(使用十六進制編輯器,例如xxd)。如果BOM不在您正在查看的文件中,則可能包含在文件中。

一些編輯器添加BOM和apache輸出它。這可能會破壞你的圖像。

+0

謝謝你很多\ o / – igorsantos07 2009-08-30 03:49:07

0

檢查圖像所在的圖像/目錄的權限。

+0

該文件夾是777和JPEG,666.兩者都是可讀的。我忘了說[我會編輯問題],但如果我評論'header'行,二進制代碼將被打印。並且當我更改原始圖像時,此代碼會發生變化。 – igorsantos07 2009-08-28 05:06:04

+0

您是否嘗試製作JPEG 777?我不知道它是否會起作用。我前段時間體驗過這個怪癖。 – Randell 2009-08-28 05:35:26

+0

另外,請檢查瀏覽器的HTML源代碼。 – Randell 2009-08-28 05:36:11

0

這可能不是原因,但你爲什麼呼應Fotos::redimensional()的結果?像imagejpeg()等功能都會在輸出圖像後返回一個bool(不是圖像數據),所以你最終會在圖像的最後打印一個'1'。我只是測試了這個,但它似乎並沒有打破JPEG圖像。

+0

是的...這不會中斷'因爲它在我的電腦上工作。無論如何,我刪除了回聲。 = P,但並沒有解決我的問題=( – igorsantos07 2009-08-28 10:55:12

0

您是否嘗試過將本地計算機與服務器進行比較?比較phpinfo()的輸出;他們是不同的平臺嗎?

相關問題