phpThumb是一个PHP库,可将大图像转换为图像缩略图并缓存结果。它需要这样的语法:http://domain.com/phpThumb.php?src=/images/image.jpg
然而,在我的Web应用程序中,我遵循严格的MVC架构,因此我将语法更改为:http://domain.com/thumb/images%2Fimage.jpg/width/height
然而现在输出图像正在抱怨
用法:/workspace/urs/index.php?src=/path/and/filename.jpg
即使我已经检查了$ _GET转储,它也显示为:
array(1) {
["src"]=>
string(42) "/workspace/urs/images/portfolio/shoopm.jpg"
}
这是运行错误的代码(在我的Web应用程序中):
// If getting a thumbnail
if($qa[0] == "thumb")
{
if(!isset($qa[1]) || !isset($qa[2]) || !isset($qa[3]))
die("Bad thumb request. Needs 3 parameters!");
unset($_GET["q"]);
$_GET["src"] = $qa[1];
$_GET["w"] = $qa[2];
$_GET["h"] = $qa[3];
include("phpThumb/phpThumb.php");
exit();
}
现在,我担心的是phpThumb检查实际的URL,而不仅仅是$ _GET参数......由于源代码包含成千上万行代码而且我没有线索,因此很难确认从哪里开始。
感谢您提供任何有用的回复
答案 0 :(得分:1)
从reading some of the source判断,看起来它试图自己进行PATH_INFO
解析。您可以通过更改disable_pathinfo_parsing
配置变量或将$_SERVER['PATH_INFO']
设置为null来防止这种情况发生。
这可能很重要,因为当src
对象的$phpThumb
属性为空时,“使用:...”错误仅发生 。它通过在$_GET
中查找此属性来填充此属性,并在尝试处理$_GET['src']
时执行一些非常严重的PATH_INFO
操作。
或者,你可能想尝试使用它自己的基于PATH_INFO
的原生网址而不是你自己的网址,只是为了避免这种情况。
答案 1 :(得分:1)
在使用Windows系统时,我遇到了类似的问题。
我的src路径中混合了前向/
和后面的\
斜杠,因此我将它们全部转换为PHP的DIRECTORY_SEPARATOR
常量(Windows中的反斜杠)。
当我将它们全部转换为正斜杠时,它才起作用