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

Imagick PHP 5.4扩展不适用于相对路径。(窗口),php,windows,relative-path,imagick,Php,Windows,Relative Path,Imagick,我正在尝试在windows上安装imagick PHP扩展。它在PHP5.2和PHP5.3上工作,但我在PHP5.4上遇到了问题 Imagick版本:ImageMagick-6.7.6-3-Q16-windows-dll。模块正在工作。我可以在phpinfo()中看到imagick 问题是,imagick无法识别文件的相对路径。例如,如果我在同一个文件夹中有simpleindex.php和a.jpg,我就不能使用$im=new-imagick('a.jpg')因为我遇到异常: 致命错误:未捕获异

我正在尝试在windows上安装imagick PHP扩展。它在PHP5.2和PHP5.3上工作,但我在PHP5.4上遇到了问题

Imagick版本:ImageMagick-6.7.6-3-Q16-windows-dll。模块正在工作。我可以在phpinfo()中看到imagick

问题是,imagick无法识别文件的相对路径。例如,如果我在同一个文件夹中有simpleindex.phpa.jpg,我就不能使用
$im=new-imagick('a.jpg')因为我遇到异常:

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

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

我发现,Imagick使用apachecoredir作为参考。我保存的图像没有路径:

$im->writeImage('这就是我要找的.jpg')

我在C:\ProgramFiles(x86)\Apache24\中找到了它。这就是我要找的。jpg

问题是,我所有的旧脚本都是用相对路径编写的,我想继续使用它们

我不知道问题是在imagick本身,还是在PHP5.4的某个地方


提前谢谢

听起来你可能发现了一个bug

我建议在

同时,您可以通过使用
\uuuuu DIR\uuuuu
\uuuu FILE\uuuuu
构建绝对路径来解决此问题

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

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

你的问题是什么?您不能使用
$\u服务器['DOCUMENT\u ROOT']
?这是唯一的Imagick问题吗?你能做
echo\uuuuu DIR\uuuuuuuuuuuuuuuuuuuuuu
并检查它是否不是你的工作目录吗?Ben:我的问题是,如何让imagick使用当前目录(D:\web\i)作为工作目录,而不是apache根目录(C:\Program Files(x86)\Apache24)(因为它在较旧的PHP版本中工作)dev null dwaller:这是唯一的imagick问题:echo DIR的输出是D:\Web\i(D:\Web是apache的http根目录,i是test srcipt和a.jpg所在的文件夹)@BenCarey:我可以使用__;DIRa、 jpg’并且它正在工作。我只是想知道,是否有办法让它在没有DIR的情况下工作。我所有的imagick srcipt都是使用相对路径(如../images/x.jpg)编写的,在PHP5.4中这是不可行的。所以我想知道是否有一种方法可以让它再次工作。谢谢你,这个解决方法正在发挥作用。实际上,更好的方法(对我来说)是realpath('a.jpg');它工作起来没有任何问题。我只是想弄清楚,是否有其他人也有类似的问题。我尝试了2个不同的php_imagick.dll(我无法在windows下自己编译)和4个不同的imagick版本(安装程序),但我认为这不是真正的问题,因为使用绝对路径,imagick工作正常。