1

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 参数......很难确认,因为源代码包含成千上万行代码,我不知道从哪里开始.

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

4

2 回答 2

1

阅读一些源代码来看,它看起来像是在尝试进行自己的PATH_INFO解析。您可以通过更改disable_pathinfo_parsing配置变量或设置$_SERVER['PATH_INFO']为 null 来防止这种情况。

这可能很重要,因为“Usage: ...”错误在对象的src属性$phpThumb为空时发生。它通过在其中查找来填充此属性,并且在尝试处理时会进行$_GET一些非常严肃的操作。$_GET['src']PATH_INFO

或者,您可能想尝试仅使用它自己的PATH_INFO基于本机的 URL 而不是您自己的,只是为了避免麻烦。

于 2011-03-25T03:29:06.460 回答
1

在 Windows 系统上工作时,我遇到了类似的问题。

我的 src 路径混合了正斜杠/\反斜杠,所以我将它们全部转换为 PHP 的DIRECTORY_SEPARATOR常量(Windows 中的反斜杠)。

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

于 2012-04-05T13:53:19.680 回答