MIME タイプをimage/png
.
.htaccess
私が持っているファイルのおかげで、次の方法でイメージにアクセスできます。
- /img/img
- /img/img.png
- /img/img.php
それらはすべて私のブラウザーでは正常に機能していますが、Teamspeak サーバーには読み込まれません。
何が起こるかわかりませんが、これらは返されるヘッダーです:
CF-Cache-Status
MISS
CF-RAY
21cddbcc942220ae-LAX
Cache-Control
no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection
keep-alive
Content-Encoding
gzip
Content-Type
text/html; charset=UTF-8
Date
Fri, 28 Aug 2015 06:11:24 GMT
Expires
Thu, 19 Nov 1981 08:52:00 GMT
Pragma
no-cache
Server
cloudflare-nginx
Transfer-Encoding
chunked
Vary
Accept-Encoding
X-Powered-By
PHP/5.4.41-0+deb7u1
まず、text/html を返します。これは、.png 画像の適切な MIME タイプではありません。
次に、スクリプトは実際に .png データを返す必要があります。
ここでは、GD または ImageMagick を使用してスクリプトで .png を作成することを計画していると仮定していますが、実際に適切な MIME タイプと適切なその MIME タイプに従うと予想される画像データ。
スクリプトの先頭で MIME タイプを設定するのは、次のように簡単です。
header('Content-type: image/png');
Cloudflareも通過しています。デバッグが完了し、スクリプトが期待どおりに動作していることを確認するまで、Cloudflare をオフにしておく必要があります。
@gview の回答のおかげで、Cloudflare がフォルダーを保護していることがわかった/img/
ので、これを停止するページ ルールを作成しました。念のため、これは私のスクリプトであり、正しいヘッダーを設定します。
# Generate $im and Stuff
# ...
# Now Output it
http_response_code(200);
$file = "./temp.png";
imagepng($im, $file);
header("Content-Type: image/png");
header("Content-Length: ".filesize($file));
readfile($file);
exit;