2013-08-22 87 views
5

我想在Symfony2中使用iMagick。Imagick php windows

我使用PHP 5.4.16和我所做的:

1複製php_imagick_nts.dll從php5-4目錄從提取http://valokuva.org/~mikko/imagick-php54-php53.tgz到PHP /分機。

2,重命名爲php_imagick.dll並添加「擴展= p​​hp_imagick.dll」爲php.ini

3 - 創建這樣的頁面:

<?php 
    $a = new Imagick(); 
?> 

,但我收到此:

Fatal error: Class ‘Imagick’ not found in C:\xampp\htdocs\info.php 

當我試圖在symfony的控制器使用,再次出現錯誤:

FatalErrorException: Error: Class 'Imagick' not found 

不幸的是約imagick擴展的細節不會出現在輸出「的phpinfo()」

這是版本與PHP 5.4.16不兼容?!如果是,我必須使用哪個版本?哪裏?感謝任何幫助......

+1

您是否在嘗試之前重新啓動服務器和PHP? –

回答

8

我花了好幾個小時試圖做出Imagick的工作,終於明白了。

我的安裝說明

  1. 安裝WAMP 32位(即使在運行64位系統,您必須使用WAMP的32位版本)
  2. 安裝ImageMagick的到C:/ ImageMagick的,使用本文件:https://www.dropbox.com/s/i2mhrhd7sp0ilzk/ImageMagick-6.8.0-3-Q16-windows-dll.exe
  3. 將帶有Imagick的DLL放入PHP的擴展文件夾中,例如d:\ wamp32 \ BIN \ PHP \ php5.4.16 \分機,我用這個文件:https://www.dropbox.com/s/ayankf850l08rm2/php_imagick.dll
  4. 在php.ini放線 「SETENV MAGICK_HOME C:/ ImageMagick的」 不帶引號
  5. 更好重啓PC

我使用WAMP 2.4,PHP 5.4.16,阿帕奇2.4.4,ImageMagick的6.8.0-3 2012年10月24日Q16,Imagick 3.1.0RC2 - 所有的32位,Win8的操作系統現在64位

它應該工作,你應該看到加載在phpinfo的Imagick擴展。

我嘗試了很多版本的ImageMagick,但新版本無法正常工作,6.8.0-3-Q16-windows-dll工作正常。

Symfony2的

在Symfony2中使用Imagick這樣的:

$im = new \Imagick('image.jpg'); 
+0

謝謝。它在一次嘗試中爲我工作,嘗試了很多其他版本,但沒有奏效。 – Minion

+0

謝謝。你救了我的命。 :D –

+0

這不適用於我的Win 7,64位系統(使用所有32位二進制文​​件)。我重新啓動了,檢查了IM重複項目的路徑等。我重新安裝了多次(包括WAMP和IM)。 – Dan

2

我很確定這是與而不是有模塊正確加載或.dll被放置在一個不正確的位置。

您可以使用PHP的內部函數extension_loaded()之前使用類檢查,

<?php 
    /** 
    * 
    **/ 
    if (!extension_loaded('Imagick')) { 
     //Load some error. 
    } 
?> 

這是你可以檢查模塊甚至被PHP reconsigned在所有的方法。 PHP還提供了一個函數來查看當前的擴展get_loaded_extensions()

<?php 
    /** 
    * Get an Array of current 
    * PHP extensions for debugging 
    **/ 
    print_r(get_loaded_extensions()); 
?> 

請務必做到:

  • 內的phpinfo()
  • 檢查正確擴展庫文件夾的位置來執行硬重新啓動您的xmapp/wamp服務器的
  • 如果你在PHP 5.4或向上(您自己一樣!),請參閱以下網站的更新的二進制文件

研究過之後,Imagick似乎有麻煩PHP 5。3或以上;從該網站下方(非官方)下載新的DLL的:

http://www.peewit.fr/imagick/

也發現有同樣問題的其他StackOverflow的文章:

#1Trying to get imagick running on PHP 5.4.3 at Windows x64

或者您可以使用GD extension或多或少地完成一些您需要的功能。我相信GD是更新版本的PHP中更廣泛支持的模塊/擴展。

+0

感謝您的迴應MackieeE,但沒有解決。我把它放在正確的文件夾中。爲了確保,我測試你的代碼(如果(!extension_loaded('Imagick')))與另一個擴展並且工作!我也檢查了php.ini的任何錯誤,但沒有錯誤的行!你認爲什麼問題? –

+0

@AliBagheriShakib嗯 - 你不是唯一一個看起來:)我發現其他網頁有同樣的問題,雖然他們可能是你找到的東西..:| – MackieeE

+0

Hi @MackieeE。是否有必要安裝http://www.imagemagick.org/download/binaries/ImageMagick-6.8.6-8-Q16-x86-dll.exe?或者複製擴展名dir的dll文件就足夠了? –

0

我用:WAMP 2.4,PHP 5.4.16,阿帕奇2.4.4,ImageMagick的6.8.0-3 2012-10 -24 Q16,Imagick 3.1.0RC2 - 全部32位,操作系統Win7 32位

fmstoun給出的指令對我完全有效。 由於我花了很多時間試圖讓DLL工作,我想添加到fmstoun給出的步驟。

  • 請重新啓動您的電腦。
  • 使用的完整路徑的圖像,例如:
$image = new Imagick($_SERVER['DOCUMENT_ROOT'] . '/images/test.jpg');
  • 確保您的系統環境中有1個單次入境:C:/ ImageMagick的和ImageMagick的沒有更多的環境變量。如果任何以前安裝有路徑,然後刪除這些路徑,並重新啓動電腦
  • 使WAMP顯示「imagick」的肯定
    http :// localhost/
    作爲加載的擴展
  • 如果擴展被正確加載,它具有的phpinfo露面()也作爲:
  • imagick module | enabled
  • ImageMagick version|ImageMagick 6.8.0-3 2012-10-24 Q16
    和一些關於imagemagick的更多信息。

考慮到這一點後,設在官方網站ImageMagick的最新版本的日期是:ImageMagick的-6.8.8-1-Q16-x86的dll.exe 從而未能加載擴展(如圖在重啓後的apache錯誤日誌中)。 因此使用fmstoun提到的版本。

希望這個答案可以節省幾個小時的工作時間,並且可以節省相同主題和不同論壇上大約15個SO問題所需的時間。

-2

對不起我的英文不好:

1°安裝的appserv

文件名: 「的appserv-win32-2.5.10.exe」

網址下載:H * TTP://www.appservnetwork .COM /(無*)

Apache的端口:8080

2º下載PHP 5.3(Apache 2.2的不支持上級)

文件名: 「php-5.3.29-Win32-VC9-x86.zip」

如何?:線程安全

網址下載:H * TTP://windows.php.net/download# PHP-5.6(無*)

3º停止Apache

4º刪除所有內容的文件夾中的 「.. \的appserv \ PHP5"

5?複製壓縮內容以」 .. \的appserv \ PHP5 「

6º添加行

date.timezone = 「美/ Buenos_Aires」(這是我區,找到你的PHP頁面)在「C

的 「php.ini中」:\ WINDOWS \ PHP。INI」

,以避免錯誤的日期在PHP中

7º啓動Apache

=========================== ==

IMAGIC(一旦安裝PHP 5.3)

1ºInstalññ圖像魔術6.7(不優越,PHP 5.3不支持)

文件名:「的ImageMagick-6.7.9-9-Q16 -windows-dll.exe「

網址下載:http://ftp.icm.edu.pl/packages/ImageMagick/binaries/

2º下載夢想家

文件名: 「php_imagick-3.1.2-5.3-ts-vc9-x86.zip」

網址下載:http://windows.php.net/downloads/pecl/releases/imagick/3.1.2/

3º在目錄「php5/ext」中,從最後一個zip下載中添加文件「php_imagick.dll」(其他文件不關心)

4º添加行

延長= php_imagick.dll

在 「的php.ini」 「C:\ WINDOWS \ php.ini中」

5°重啓Apache

4

嘗試了許多解決方案後,似乎沒有一個工作。

我設法安裝在Windows 10 64位,Apache 2.4和PHP 5.6上,但我認爲它應該適用於所有版本。

希望您在安裝Imagick for PHP時沒有任何問題。


步驟1)收集信息

首先,你應該收集你的PHP環境的一些信息。

你可以很容易地看到你的PHP信息與功能phpinfo()

您所需要的信息:

  • 架構: 86(32位)或x64(64位)
  • PHP版本:您可以在phpinfo()輸出的標題中找到它。
  • PHP擴展編譯:此字符串包含兩個重要部分:
    • NTS或TS
    • VCX(如VC11)
  • 加載的配置文件:路徑到您的使用php.ini文件。

步驟2)下載二進制

您可以下載二進制from the official site of ImageMagick。我建議您閱讀「Windows二進制發行版」下的小介紹,以確定哪些「每像素位數」可供選擇(8或16)。 下載最新版本應該沒問題。

請確保此二進制文件與您在第步驟1中收集到的PHP體系結構具有相同的體系結構。

步驟3)安裝二進制

安裝二進制您phpx.x.xx\bin文件。例如:C:\wamp64\bin\php\php5.6.16\bin。 (這可以是任何文件夾,但爲了方便我放在這裏)

確保選中「將應用程序目錄添加到您的系統路徑」。儘管如此,應該默認選中。

步驟4)下載PHP擴展

DLL PHP擴展,可通過the windows pecl php site

同樣,你可以點擊最新版本。

接下來,根據收集的信息選擇正確的版本。
例如:php_imagick-3.4.1-5.6-nts-vc11-x64.zip

這可剝離成組件:

  • php_imagick-3.4.1 - 這是PHP版本的imagick擴展。這並不重要。
  • 5.6 - 這是你的PHP版本,應該等於你正在使用的PHP版本,你已經在步驟1中確定了。
  • NTS - 這應該等於您在步驟1收集的PHP Extension Build的信息。
  • VC11 - 這也應該等於您在步驟1收集的PHP Extension Build的信息。
  • x64 - 這是擴展的體系結構,應該等於您在步驟1中收集的PHP體系結構

步驟5)提取PHP擴展

你下載的文件後,應打開.zip文件,查找一個文件名爲:php_imagick.dll。 將該文件解壓到phpx.x.xx\ext

確保您的.dll文件完全可訪問。有時你需要明確地解鎖該文件。

Unblock file

步驟6)激活PHP擴展

要激活PHP擴展,你應該要使用這個擴展您的php.ini文件的狀態。 你收集的路徑,你使用php.ini文件在步驟1中

extension=php_imagick.dll添加到您的php.ini

PHP.ini Imagick line

步驟7)重新啓動電腦

只是爲了讓當然,請重新啓動您的電腦,以便所有Environment Path將被正確加載。


這應該安裝Imagick正確的最新版本和正確的體系結構。 Imagick也應在phpinfo()列出與適當的「ImageMagick支持的格式」(只要確保它不是空的)。

+0

優秀的方向......仍在努力讓他們的工作,但在ImageMagick網站上的Windows下載目錄實際上是http://www.imagemagick.org/script/download.php#windows,而不是http:// www。 imagemagick.org/script/script/download.php#windows(額外的腳本目錄) –