私は単純な php プロキシを書いていますが、png ファイルの表示に問題があります。出力は次のとおりです。
それは次のようになります。
画像は Notepad++ で開きます。私のphp curlコードは次のようになります:
$ua = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_HEADER_OUT, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$content = curl_exec($ch);
$info = curl_getinfo($ch);
header('Content-Type:' . $info['content_type']);
echo $content
出力は同じで、画像は表示されません。どうすれば画像を表示できますか?
編集:データをファイルに保存し、ロケーションヘッダーを使用してリダイレクトすると、画像が正しく表示されます:
$file = fopen('proxy_tmp~', 'w');
fwrite($file, $content);
fclose($file);
header('Location: ' . DIR . 'proxy_tmp~');
EDIT 2:gzip圧縮がありましたが、それを無効にすると同じ問題が発生します.Notepad ++で両方のファイルを開くと、1つはDOS / Windows ANSI(オリジナル)で、もう1つはDOS / Windows UTF-8(スクリプト)。メモ帳でファイルを開き、エンコーディングを ANSI に変更してファイルを保存すると、すべて問題ありません。
編集 3 : GNU/Linux でも同じことをしたと思いますが、CURLOPT_BINARYTRANSFER
オプションなしで問題なく動作しています。ここに私のプロジェクトhttps://github.com/jcubic/yappがあります。Windows 10 で Wamp を使用してテストしたところ、問題なく動作しました。