我有一个 PHP 文件,它通过将 mime-type 设置为image/png
.
感谢.htaccess
我拥有的 -file,我可以通过以下方式访问我的图像:
- /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;