乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      PHP輸出的有效圖像總是“包含錯誤”,可能導(dǎo)致這種情況?

       印度阿三17 2019-05-21

      幾個月前,我使用PHP 5.3為客戶編寫了一個網(wǎng)站.它在我自己的LAMP網(wǎng)絡(luò)服務(wù)器上完美運行.但是,當(dāng)他試圖將它安裝在自己的服務(wù)器上時(目前是在CentOS 5上運行DirectAdmin的OVH服務(wù)器),他遇到了一個我無法搞清楚的問題.

      該網(wǎng)站可以存儲通過表格上傳的圖像.圖像在上載時加水印并移動到Web服務(wù)器中的目錄(某些元數(shù)據(jù)存儲在數(shù)據(jù)庫中,但這與此問題無關(guān)).

      為了將這些圖像顯示給用戶,使用腳本如下:

      header("Content-type: image/jpeg");
      ob_start();
      echo file_get_contents($path);
      $size = ob_get_length();
      $img = ob_get_contents();
      ob_end_clean();
      header ("Content-length: " . $size);
      echo $img;
      

      不幸的是,這總是會返回一個損壞的圖像(在Firefox中,“圖像無法顯示,因為它包含錯誤”).現(xiàn)在,經(jīng)過仔細測試,我知道:

      >圖像已正確上載到服務(wù)器.存儲在網(wǎng)絡(luò)服務(wù)器中的圖像數(shù)據(jù)是有效的,可以通過FTP作為常規(guī)圖像獲得.
      >如果我將$img存儲在前一個腳本的最后一行之前的文件中,如下所示:

      $fh = fopen("test.jpg", "w");
      fwrite($fh, $img);
      fclose($fh);
      

      它還會將正確的圖像數(shù)據(jù)保存到文件中.因此,數(shù)據(jù)在發(fā)送到用戶的Web瀏覽器之前立即完好無損.
      >正在正確發(fā)送標(biāo)頭.

      然而!如果我使用text / plain標(biāo)頭而不是image / jpeg,我可以看到返回的亂碼與顯示的亂碼不同,如果我用記事本本地打開文件(或直接通過apache將圖像作為文本文件發(fā)送).在原始圖像中,我可以看到一些EXIF.在PHP生成的圖像中,然后發(fā)送到用戶的Web瀏覽器,我仍然看到JFIF魔術(shù)代碼(用于JPEG文件圖像格式),但其余的看起來不同.

      我擔(dān)心我在PHP或Apache上遇到與編碼,緩沖,內(nèi)容壓縮等相關(guān)的配置相關(guān)問題.有誰知道我可以嘗試解決這個問題嗎?

      編輯:

      更改了要使用的腳本:

      $img = file_get_contents($path);
      $size = filesize($path);
      

      問題保持不變,但現(xiàn)在內(nèi)容與真實圖像與PHP發(fā)送的圖像相比看起來完全相同.根據(jù)標(biāo)題,內(nèi)容編碼是gzip.有任何想法嗎?

      解決方法:

      好吧,經(jīng)過一些調(diào)查后,它變成了臭名昭著的字節(jié)順序標(biāo)記簽名(當(dāng)然,還有輸出緩沖,它可以抑制錯誤).
      它似乎只是重新保存文件沒有BOM將解決問題

      它有用嗎?

      header("Content-type: image/jpeg");
      echo file_get_contents($path);
      

      或這個?

      header("Content-type: image/jpeg");
      readfile($path);
      

      下載此圖像(使用wget或在其上創(chuàng)建鏈接并使用“另存為”)并查看差異.它可能會揭示原因

      是的ob在這里絕對無事可做.如果你想獲得一個文件大小 – 有一個(驚喜!)函數(shù)

      header("Content-type: image/jpeg");
      header ("Content-length: " . filesize($path));
      readfile($path);
      
      來源:http://www./content-1-201001.html

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多