今天我在我的网站上的function.php上工作,该区域与提供图像无关。我有一个php脚本,它从webroot外部获取图像,并暂时基于$ _GET为它们提供服务。一分钟它正在工作,然后下一个它没有。我不知道发生了什么。我将其归结为MAC Sierra的BS服务器管理,但将所有内容移至LINUX服务器并没有任何区别。
<?php
include('includes/functions.php');
$path = $privatePath;
$uid = getUserProfileImage();
$img = $_GET['img'];
$file = $path."/img/users/".$uid."/".$img;
$fallback = "img/site/login.png";
//DETERMINE TYPE
$var = explode ('.', $img);
$ext = array_pop($var);
$allowed['gif'] = 'image/gif';
$allowed['png'] = 'image/png';
$allowed['jpg'] = 'image/jpeg';
$allowed['jpeg'] = 'image/jpeg';
if(file_exists($file) && $ext != '' && isset($allowed[strToLower($ext)])) {
$type = $allowed[strToLower($ext)];
} else {
$file = $fallback;
$type = 'image/png';
}
header('Content-Type: '.$type);
//header ("Content-Disposition: inline; filename=\"{$img}\");
header("Content-length: ".(string)(filesize($file)));
//echo file_get_contents($file);
readfile($file);
exit();
?>
从一分钟到下一分钟,这段代码工作正常。我检查了文件夹的权限,并验证它是否由www-data拥有。 Firefox显示图像有错误。通常,当我在输出缓冲区之前回显某些内容时,我会收到该错误消息。但现在是谁知道是什么原因。
Firefox中的RAW数据输出在读取图像时是这样的:
CgoKCv/Y/+EeQUV4aWYAAElJKgAIAAAADAAAAQMAAQAAAAACAAABAQMAAQAAAAACAAACAQMAAwAAAJ4AAAAGAQMAAQAAAAIAAAASAQMAAQAAAAEAAAAVAQMAAQAAAAMAAAAaAQUAAQAAAKQAAAAbAQUAAQAAAKwAAAAoAQMAAQAAAAIAAAAxAQIAHgA ...
这有点继续。我已经重新保存了图像以及我能想到的其他所有内容。我甚至删除了以前脚本工作时所做的所有工作,没有变化。有人有任何想法吗?或者是否有更多错误我可以记录以查看问题并获得提示?