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

fil*_*ras 14 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.phpa.jpg,我就无法使用,$im = new imagick('a.jpg');因为我得到了异常:

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

但是,当我使用绝对路径时,$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中的某个地方.

先感谢您

Gor*_*onM 10

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

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

在此期间,您可以通过使用__DIR____FILE__构建绝对路径来解决它.

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

$im = new imagick (__DIR__ . DIRECTORY_SEPARATOR . 'a.jpg');
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这个解决方法正在运行.实际上,更好的方式(对我而言)是realpath('a.jpg'); 它没有任何问题.我只想弄清楚,如果其他人有类似的问题.我尝试了2个不同的php_imagick.dll(我不能自己在windows下编译)和4个不同的Imagick版本(安装程序),但我认为这不是真正的问题,因为有绝对路径,imagick工作正常. (2认同)