png — Teamspeak Hostbanner не работает с файлом PHP

У меня есть файл PHP, который имитирует файл PNG, установив MIME-тип в image/png,

Благодаря .htaccess-файл, который у меня есть, я могу получить доступ к своему образ этими способами:

  • / IMG / IMG
  • /img/img.png
  • /img/img.php

и все они хорошо работают в моем браузере, но не загружаются на мой сервер Teamspeak.

-1

Решение

Я не уверен, что вы ожидаете, это возвращаемые заголовки:

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, пока вы не отладите все и не будете уверены, что скрипт работает должным образом.

1

Другие решения

Благодаря @ 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;
0

По вопросам рекламы [email protected]