2012-03-31 93 views
14

我試圖在windows上安裝imagick PHP擴展。它正在PHP 5.2,PHP 5.3上工作,但我在PHP 5.4中遇到了問題。Imagick PHP 5.4擴展不支持相對路徑。 (windows)

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

問題是,imagick無法識別文件的相對路徑。舉例來說,如果我有簡單的的index.phpA.JPG在同一文件夾,我不能使用$im = new imagick('a.jpg');因爲我得到異常:

Fatal error: Uncaught exception 'ImagickException' with message 'unable to open image `a.jpg': No such file or directory @ error/blob.c/OpenBlob/2614' in D:\Web\i\index.php:3 Stack trace: #0 D:\Web\i\index.php(3): Imagick->__construct('a.jpg') #1 {main} thrown in D:\Web\i\index.php on line 3

但是當我使用絕對路徑$im = new imagick('D:\web\i\a.jpg');是加工。

我發現,Imagick使用Apache核心dir作爲參考。我保存了沒有路徑的圖像:

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

而且我發現它在C:\ Program Files文件(x86)的\ Apache24 \這個的,是什麼-IM-尋找-for.jpg

的問題是,我所有的舊腳本寫有相對路徑,我想countinue使用它們。

我不知道,如果問題是在imagick本身,或PHP 5.4中的某個地方。

預先感謝您

+0

什麼是你的問題?你不能使用'$ _SERVER ['DOCUMENT_ROOT']'? – 2012-03-31 09:56:40

+0

這是唯一的Imagick問題嗎?你可以做'echo __DIR__'並檢查它是否不是你的工作目錄? – 2012-03-31 10:27:29

+1

Ben:我的問題是,如何讓imagick使用當前目錄(D:\ web \ i)作爲工作目錄而不是apache根目錄(C:\ Program Files(x86)\ Apache24 \)(因爲它工作在舊的PHP版本) – 2012-03-31 11:33:06

回答

10

聽起來像是你可能已經出土的錯誤。

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

報告它在此期間,你可以解決它通過使用__DIR____FILE__構建一個絕對路徑。

例如,使用該腳本的目錄,請執行下列操作:

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

謝謝,此解決方法正在工作。實際上,更好的方式(對我來說)是realpath('a。JPG');它的工作沒有任何問題。我只是想弄明白,如果別人有類似的問題。我嘗試了2個不同的php_imagick.dll(我不能在windows下自己編譯它)和4個不同的Imagick版本(安裝程序),但我認爲這不是真正的問題,因爲絕對路徑imagick工作正常。 – 2012-03-31 15:24:32