Imagick PHP 5.4扩展不适用于相对路径。 (视窗)

时间:2012-03-31 09:36:24

标签: php windows relative-path imagick

我正在尝试在Windows上安装imagick PHP扩展。它正在开发PHP 5.2,PHP 5.3,但我遇到了PHP 5.4的问题。

Imagick版本:ImageMagick-6.7.6-3-Q16-windows-dll。模块正在运行。我可以在phpinfo()中看到想象力。

问题是,imagick无法识别文件的相对路径。例如,如果我在同一文件夹中有简单的 index.php a.jpg ,我就无法使用$im = new imagick('a.jpg');因为我得到例外:

  

致命错误:未捕获异常'ImagickException',消息'无法打开图像`a.jpg':D:\ Web \ i \ index中没有这样的文件或目录@ error / blob.c / OpenBlob / 2614'。 php:3堆栈跟踪:#0 D:\ Web \ i \ index.php(3):在D:\ Web \ i \ index中抛出的Imagick-> __ construct('a.jpg')#1 {main}。 php在第3行

但是当我使用绝对路径$im = new imagick('D:\web\i\a.jpg');时,它正在工作。

我发现,Imagick正在使用Apache核心目录作为参考。我保存了没有路径的图像:

$ im-> writeImage('this-is-what-im-looking-for.jpg');

我在 C:\ Program Files(x86)\ Apache24 \ this-is-what-im-looking-for.jpg

中找到了它

问题是,我所有的旧脚本都是用相对路径编写的,我想用它们来计算。

我不知道,如果问题出在想象本身,或者是PHP 5.4中的某个地方。

提前谢谢

1 个答案:

答案 0 :(得分:10)

听起来你可能已经发现了一个错误。

我建议在http://bugs.php.net/report.php

报告

与此同时,您可以使用__DIR____FILE__构建绝对路径来解决此问题。

例如,要使用脚本的目录,请执行以下操作:

$im = new imagick (__DIR__ . DIRECTORY_SEPARATOR . 'a.jpg');