Teamspeak Hostbanner 不适用于 PHP 文件
Teamspeak Hostbanner doesn't work with PHP File
我有一个 PHP 文件,它通过将 mime 类型设置为 image/png
来模仿 PNG 文件。
感谢我拥有的 .htaccess
文件,我可以通过以下方式访问我的 图片:
- /img/img
- /img/img.png
- /img/img.php
它们在我的浏览器中都运行良好,但它们无法加载到我的 Teamspeak 服务器上。
我不确定您希望发生什么,这些是 headers 正在 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
所以首先,您正在 returning text/html。这不是 .png 图像的正确 MIME 类型。
其次,您的脚本实际上需要 return .png 数据。
我在这里假设您计划使用 GD 或 ImageMagick 在您的脚本中创建 .png,但是无论您打算做什么,当您没有实际提供正确的图像时,都不会出现任何图像mime 类型和预期遵循该 mime 类型的正确图像数据。
在脚本顶部设置 MIME 类型非常简单:
header('Content-type: image/png');
您也在使用 Cloudflare。在调试完所有内容并确定脚本按预期运行之前,您应该关闭 Cloudflare。
感谢 @gview's answer 我发现 Cloudflare 正在保护 /img/
文件夹,所以我制定了一个页面规则来阻止它。以防万一你需要它,这是我的脚本,它设置了正确的 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;
我有一个 PHP 文件,它通过将 mime 类型设置为 image/png
来模仿 PNG 文件。
感谢我拥有的 .htaccess
文件,我可以通过以下方式访问我的 图片:
- /img/img
- /img/img.png
- /img/img.php
它们在我的浏览器中都运行良好,但它们无法加载到我的 Teamspeak 服务器上。
我不确定您希望发生什么,这些是 headers 正在 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
所以首先,您正在 returning text/html。这不是 .png 图像的正确 MIME 类型。
其次,您的脚本实际上需要 return .png 数据。
我在这里假设您计划使用 GD 或 ImageMagick 在您的脚本中创建 .png,但是无论您打算做什么,当您没有实际提供正确的图像时,都不会出现任何图像mime 类型和预期遵循该 mime 类型的正确图像数据。
在脚本顶部设置 MIME 类型非常简单:
header('Content-type: image/png');
您也在使用 Cloudflare。在调试完所有内容并确定脚本按预期运行之前,您应该关闭 Cloudflare。
感谢 @gview's answer 我发现 Cloudflare 正在保护 /img/
文件夹,所以我制定了一个页面规则来阻止它。以防万一你需要它,这是我的脚本,它设置了正确的 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;