我正在尝试在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中的某个地方。
提前谢谢
答案 0 :(得分:10)
听起来你可能已经发现了一个错误。
我建议在http://bugs.php.net/report.php
报告与此同时,您可以使用__DIR__
或__FILE__
构建绝对路径来解决此问题。
例如,要使用脚本的目录,请执行以下操作:
$im = new imagick (__DIR__ . DIRECTORY_SEPARATOR . 'a.jpg');