【发布时间】:2012-04-14 20:01:44
【问题描述】:
我正在尝试在 Windows 上安装 imagick PHP 扩展。它在 PHP 5.2、PHP 5.3 上运行,但我在 PHP 5.4 上遇到问题。
Imagick 版本:ImageMagick-6.7.6-3-Q16-windows-dll。模块正在工作。我可以在 phpinfo() 中看到 imagick。
问题是,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): Imagick->__construct('a.jpg') #1 {main} throw in D:\Web\i\index.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
中找到了它问题是,我所有的旧脚本都是用相对路径编写的,我想继续使用它们。
我不知道,问题出在 imagick 本身,还是在 PHP 5.4 的某个地方。
提前谢谢你
【问题讨论】:
-
您的问题是什么?可以不用
$_SERVER['DOCUMENT_ROOT']吗? -
这只是 Imagick 问题吗?你能做
echo __DIR__并检查它是否不是你的工作目录吗? -
Ben:我的问题是,如何让 imagick 使用当前目录 (D:\web\i) 作为工作目录而不是 apache 根目录 (C:\Program Files (x86)\Apache24) (因为它在旧 PHP 版本中工作)
-
dev-null-dwaller:这只是想象的问题: echo DIR 的输出是 D:\Web\i (D:\web 是 apache http root,i 是test srcipt 和 a.jpg 所在的文件夹)
-
@BenCarey:我可以使用 __ DIR __ 。 'a.jpg' 并且它正在工作。我只是想知道是否有办法在没有 __ DIR __ 的情况下使其工作。我所有的 imagick srcipts 都是使用相对路径(如 ../images/x.jpg)编写的,在 PHP5.4 中,这不再有效。所以我想知道是否有办法让它再次工作。
标签: php windows relative-path imagick