2011-01-12 65 views
0

下面的代碼傳輸,其上從服務器向使用捲曲客戶現場動態創建的圖像。它停止工作近期和一直沒能找出問題所在:回波+ file_get_contents()函數增加了額外的換行符到輸出


    // get_image.php 
    ob_start(); 

    // create a new CURL resource 
    $ch = curl_init(); 

    // set URL and other appropriate options 
    curl_setopt($ch, CURLOPT_URL, 'url/to/image.php'); 
    curl_setopt($ch, CURLOPT_HEADER, false); 
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

    // set timeouts 
    set_time_limit(30);      
    curl_setopt($ch, CURLOPT_TIMEOUT, 30); 

    // open a stream for writing 
    $outFile = fopen($fileDestination, 'wb'); 

    curl_setopt($ch, CURLOPT_FILE, $outFile); 

    // grab file from URL 
    curl_exec($ch); 
    fclose($outFile); 

    // close CURL resource, and free up system resources 
    curl_close($ch); 
    ob_end_clean(); 

    //image.php 

    /* 
    * Create image based on client site ... 
    */ 

    $filePath = 'path/to/image.png' 
    $imageFile = file_get_contents($filePath); 

    header("content-type: image/png");   
    echo $imageFile; 
    unlink($filePath); 

文件get_image.php位於客戶端的網站,並要求設在我的服務器上的文件image.php。

這段代碼運行在客戶網站上的圖像是比原來的約7個字節後,這些字節似乎是換行符。經過幾個小時的調試後,我發現當我回顯$ imageFile時會添加這些字節。如果從結果圖像中手動刪除7個字節,圖像將正確顯示。

沒有引發的錯誤,也不例外。在服務器中創建的映像不會造成問題。在FF唯一的輸出是「形象‘URL /到/ image.php’無法顯示,因爲它包含錯誤」

我不知道是什麼原因造成這一點。非常感謝幫助。

  • Onema

UPDATE:
http://files.droplr.com/files/38059844/V5Jd.Screen%20shot%202011-01-12%20at%2012.17.53%20PM.png

http://files.droplr.com/files/38059844/QU4Z.Screen%20shot%202011-01-12%20at%2012.23.37%20PM.png

+0

什麼是在圖像的源代碼中嗎? – 2011-01-12 20:04:28

+0

@Pekka你是指生成圖像的代碼?我們使用GD創建圖像。 – Onema 2011-01-12 20:30:13

回答

2

有些事情要檢查。

這兩個文件都存儲無物料清單

這<?PHP的是前五個字符和「?>」過去兩年中這兩個文件。

當您刪除的ob_start()和OB_END清潔(()應該沒有顯示錯誤消息

如果您在genereation之前把取消鏈接,就可以看到genereated文件 - 檢查它是否有效。

1

你可能要開始從文件的末尾留下的最後>的做法? - 這是沒有必要的,如果有空格和換行後的PHP定界符可能會導致問題

相關問題