這串代碼,在 linux 環境下無法顯示圖片
$img_url = $_GET['img'];$content = file_get_contents($img_url);header('Content-Type: image/jpeg; charset=UTF-8');echo $content;
linux 環境的訪問地址 demo (存在問題)
mac 環境的訪問地址 demo (正常)
win 關機了就不貼了 (正常)
我在這串代碼之前添加過 error_reporting(E_ALL);ini_set("display_errors","On");die;
未發現錯誤,
檢查了 linux 環境下的 allow-url-fopen
為 on
,並且可以 print_r
出來,內容相同如下:
����JFIF��;CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 90 ��C ��C ��j�"�� ���}!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������� ���w!1AQaq"2�B���� #3R�br� $4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������?�����2���}x����bi��f(�IQ߆���]/�?
這串字元沒太多意義,截取了頭部一段貼了上來。
同時添加一個 phpinfo 供大家查看
回複內容:
這串代碼,在 linux 環境下無法顯示圖片
$img_url = $_GET['img'];$content = file_get_contents($img_url);header('Content-Type: image/jpeg; charset=UTF-8');echo $content;
linux 環境的訪問地址 demo (存在問題)
mac 環境的訪問地址 demo (正常)
win 關機了就不貼了 (正常)
我在這串代碼之前添加過 error_reporting(E_ALL);ini_set("display_errors","On");die;
未發現錯誤,
檢查了 linux 環境下的 allow-url-fopen
為 on
,並且可以 print_r
出來,內容相同如下:
����JFIF��;CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 90 ��C ��C ��j�"�� ���}!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������� ���w!1AQaq"2�B���� #3R�br� $4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������?�����2���}x����bi��f(�IQ߆���]/�?
這串字元沒太多意義,截取了頭部一段貼了上來。
同時添加一個 phpinfo 供大家查看
這個問題於昨夜三點解決,在代碼輸出之前添加 ob_clean
即可,在 Thinkphp 的偵錯模式下會有意外輸出,但是這個輸出是什麼尚未找到,而且這個意外輸出只有 linux 下才會有,懷疑是架構問題和系統配置之間有什麼問題。
正常來說, 應該可以輸出圖片的。 windows 下,我測試時沒有問題。 thinkphp 可能某些應用到ob 緩衝了,清理下吧,不然直接在瀏覽器輸出 二進位流可能有問題。
少擴充
freetype,jpegsrc,libpng裝上試試
header('Content-Type: image/jpeg; charset=UTF-8');
這行去掉charset=UTF-8
header('Content-Type: image/jpeg');
看了一下,lz的相應頭裡是 Content-Type: image/jpg
,應該是 Content-Type: image/jpeg
。