即使我提供了正确的输入,phpThumb也会显示“使用”示例

时间:2011-03-25 01:06:41

标签: php thumbnails phpthumb

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参数......由于源代码包含成千上万行代码而且我没有线索,因此很难确认从哪里开始。

感谢您提供任何有用的回复

2 个答案:

答案 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中的反斜杠)。

当我将它们全部转换为正斜杠时,它才起作用