简体   繁体   中英

Teamspeak Hostbanner doesn't work with PHP File

I'm having a PHP file that is imitating a PNG file by setting the mime-type to image/png .

Thanks to a .htaccess -file that I have, I can access my image in these ways:

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

and all of them are working well in my browser, but they don't load on my Teamspeak server.

I'm not sure what you expect to happen, these are the headers being returned:

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

So first off, you are returning text/html. That is not the proper mime type for a .png image.

Secondarily, your script needs to actually return .png data.

I'm assuming here you plan to create the .png in your script using GD or ImageMagick, but whatever you plan to do, nothing will appear when an image is expected, when you don't actually provide the proper mime type and the proper image data that is expected to follow that mime type.

Setting the mime type at the top of your script is as easy as:

header('Content-type: image/png'); 

You are also going through Cloudflare. You should have Cloudflare turned off until you've debugged things and are sure that the script is operating as expected.

Thanks to @gview's answer I found out that Cloudflare was protecting the /img/ folder, so I made a page rule to stop this. Just in case you need it, this now is my script and it sets the correct headers:

# 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;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM