У меня есть файл PHP, который имитирует файл PNG, установив MIME-тип в image/png
,
Благодаря .htaccess
-файл, который у меня есть, я могу получить доступ к своему образ этими способами:
и все они хорошо работают в моем браузере, но не загружаются на мой сервер 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
Итак, во-первых, вы возвращаете текст / HTML. Это неправильный тип пантомимы для изображения .png.
Во-вторых, ваш скрипт должен на самом деле возвращать данные .png.
Здесь я предполагаю, что вы планируете создать .png в своем скрипте, используя GD или ImageMagick, но что бы вы ни планировали делать, ничего не появится, когда ожидается изображение, когда вы на самом деле не предоставляете правильный тип mime и правильный данные изображения, которые, как ожидается, будут следовать этому типу пантомимы.
Установить MIME-тип в верхней части вашего скрипта так же просто, как:
header('Content-type: image/png');
Вы также проходите через Cloudflare. Вам следует отключить Cloudflare, пока вы не отладите все и не будете уверены, что скрипт работает должным образом.
Благодаря @ gview’s answer Я узнал, что 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;