web-dev-qa-db-ja.com

php / windowsでImageMagick拡張機能をインストールする

IISを使用するWindowsServer2003でPHPバージョン5.2.5を実行しています。

ImageMagickを問題なくインストールできた実質的に同じサーバーがあります。まったく同じバージョンのphpを実行しています。次の手順を使用してインストールしましたが、このサーバーでは機能しないようです。 ImageMagick自体はインストールされていますが、phpは拡張機能をロードしません。

拡張機能をインストールするのに何時間も費やしました。 phpinfo()には表示されません。

インストール手順

WindowsにIMagickをインストールするにはXP(PHP 5.2.x)

  1. ダウンロードしてインストールする_ImageMagick-6.5.8-7 Q16-windows-dll.exe_ http://www.imagemagick.org/download/binaries/ImageMagick-6.5.8-7-Q16-windows-dll.exe

  2. _php_imagick_dyn-Q16.dll_を http://valokuva.org/outside-blog-content/imagick-windows-builds/080709/ からダウンロード

    DLLを[PHP]/extension dirにコピーし、名前を_php_imagick.dll_に変更します

  3. _php.ini_ファイルを編集して、新しい拡張子を追加する必要があります。

    _extension=php_imagick.dll
    _
  4. _php.ini_を保存し、Apacheサーバーを再起動します。 (必要に応じて、Windowsを再起動します)

  5. phpinfo()imagickが有効になっていることを示す必要があります。

15
Jason

ユーザーButtercupからの回答がvery有用であることがわかりました。また、彼がより明確である可能性がある場合も同様です。

私のシナリオは、Windows 2012 R2 x64、PHP 5.5.19 x64であり、PHPをサポートするImageImagickをインストールする必要があります。以下のポイントに従って、インストールできました。 ImageImagick 6.9.0x64およびPHP_Imagick.dll3.1.2(どちらも現在最新の安定バージョンです)。

allコンポーネント(PHP、ImageImagick、PHP_Imagick)をNTSおよびx64モードでダウンロードしたことに注意してください。TSおよび/またはx86モードではありません。これがあなた自身の場合に当てはまるかどうかはわかりません。

Buttercupを読んでいる私にとって(ユーザーRhoVisionsに関して)はっきりしなかった点は、彼のコメントでした:「ImageMagick 6.8.8Windowsバージョンから見つかったDLLをPHPバージョン」で上書きしてください」。

だから、これは私がやったことです(Buttercupソリューションに基づいて、何度も何度も言っていただきありがとうございます!):1)最新のImageMagick EXEインストーラーを http://www.imagemagick。 org/script/binary-releases.php#windows 私の場合、「Win64 dynamic at 16 bits-per-pixel」というラベルの付いたHTTPダウンロードとして利用可能な最初のファイルをダウンロードしました(ファイル名:ImageMagick-6.9.0-0-Q16 -x64-dll.exe)

2)ダウンロードしたインストーラーを実行します。 C:\ ImageMagick6.9.0のような単純なパスにインストールしました(ただし、Program Filesから移動することはそれほど重要ではないと思います)。また、インストール中に他のパラメータをデフォルトから変更しませんでした。

3)最新のPHP_Imagick DLLファイルをPECLWebサイトからダウンロード: http://pecl.php.net/package/imagick 安定版(ベータ版またはRCではない)を選択しました)バージョン、私の場合は3.1.2、「Windowsロゴ」+「DLL」ラベルをクリックします。私の場合はhttp://pecl.php.net/package/imagick/3.1.2/windowsにリンクされていました。 。それが開くページであなたはテーブルを見つけるでしょう:あなたは以下に応じてあなたのファイルを選ばなければなりません:a)あなたが持っているPHPのバージョンの数(私の場合は利用可能なDLLがありましたPHP 5.3、5.4、5.5、5.6)b)x64またはx86バージョンのPHPあなたはc)NTSまたはTSバージョンのPHP私の場合はPHP 5.5.x、x64、NTS:「5.5Non Thread Safe(NTS)x64」というラベルの付いたものをダウンロードしました(ファイル名:php_imagick- 3.1.2-5.5-nts-vc11-x64.Zip)

4)php_imagick Zipを解凍し、次の手順を実行します。a)php_imagick.dllファイルをPHPインストール)のEXTフォルダーにコピーします。b)すべてのCORE_RL _をコピーして置き換えます。ポイント#2で選択したフォルダーに解凍したばかりのフォルダーからのdll。もちろん、置き換えられたファイルをバックアップしてください。私の場合、8つのCORE_RL _。dllファイルを解凍したフォルダーからC:\ ImageMagick6.9.0にコピーしました。 C:\ ImageMagick6.9.0に残しました。他のCORE_RL _ *。dllは上書きされませんでした。

5)次の単純な行を追加するために、PHP.iniファイルを編集して保存します:extension = php_imagick.dll

6)サーバーを再起動します(残念ながら、再起動の適切な代替手段は見つかりませんでした。adminコマンドからのIISRESETもあります-プロンプトは機能しませんでした)。

7)再起動が完了したら、ブラウザでphpinfo.phpファイルにリモートアクセスして、Imagickモジュールに問題がないことを確認します。私の場合はそうでした。

これがお役に立てば幸いです。

9
ilNebbioso

別のソースを見つけました。 PECL直接ダウンロード。

インストール手順

ImageMagickのインストール

IIS 8.1/Windows 2012r2 php x64と互換性のある最新のImageMagicをダウンロードする場所:

http://windows.php.net/downloads/pecl/deps/

ナビゲートしてダウンロード:ImageMagick-6.8.8-vc9-x86.Zip for PHP 32ビット、5.4.xx

ImageMagick-6.8.8-vc11-x86.Zip for PHP 32ビット、5.5.xx

ImageMagick-6.8.8-vc11-x64.Zip for PHP 64ビット、5.5.xx

チップ:

  • ImageMagick 6.8.8Windowsバージョンから見つかったDLLをPHPバージョンで上書きします。

  • ファイルがメモリにロックされている場合は、再起動する必要があります。

php_imageMagick.dllの場所

http://windows.php.net/downloads/pecl/releases/imagick/

適切なDLLをダウンロードします。

ImageMagick DLLの最新バージョンであるphp_imagemagick.dll(非スレッドセーフバージョンとスレッドセーフバージョンの両方)を入手できます。

ヒント:

  • Php5ts.dllが見つからない場合は、間違ったバージョンのphp_imagemagic.dllをダウンロードし、他のバージョンをダウンロードしました。

  • IIS-'NTS'バージョンを使用-php_imagemagick_nts.dllを使用している場合

  • apacheを使用している場合-「TS」バージョンを使用します-php_imagemagick_ts.dll

4
buttercup

Windowsで、phpサーバーに拡張機能を追加する場合は、次の3つのパラメーターを確認する必要があります。

  1. phpinfo()で示される、phpサーバーがコンパイルしたコンパイラバージョン(VC9またはVC10)。

  2. phpinfo()で示されるPHP拡張API番号。

  3. 最も重要なパラメータは、Webサーバーがts(スレッドセーフ)であるかnts(非スレッドセーフ)であるかであり、これはphpinfo()で示されます。

私の経験では、IISはデフォルトでntsであり、Webサーバーで正しく機能するためにphp拡張機能をntsphpライブラリでコンパイルする必要があることがわかりました。ただし、拡張機能とphpWebサーバー拡張機能を適切にロードする場合は、これら3つのパラメーターでまったく同じである必要があります。

2
A23149577

imagickフォルダーとc:\ windows\temp(IUSRはimagickの読み取り/実行、windows\tempの読み取り/書き込み/実行)にアクセス許可を設定するまで、何も機能しませんでした。

* windows\tempに読み取り/書き込み/実行が必要かどうかは100%わかりませんが、グーグルサーフィン中にどこかのサイトにリストされていました*

再起動の部分は、imagickフォルダーがシステムパスディレクトリにあり、phpinfo()に表示されていることを確認することです。これはすでに私のパスにあるため、権限を設定した後に再起動する必要はありませんでした。

1
Matt H

Windowsを再起動する必要はありません。 PHP exeを実行しているアプリケーションプールを再起動する必要があります。これは、IISをリセットすることで実行できます(これは、すべてのアプリケーションプールを取得するための最良のオプションです。または、PHPを実行しているアプリケーションプールをリサイクルします。

1
user724171

これは古い質問ですが、以前にPHP/IISで同様の問題が発生しました。再確認することを提案できるいくつかのこと:

  • Phpinfoページを使用して、正しいphp.iniファイルを編集しているかどうかを確認し、最初のページの「ロードされたphp.iniファイル」を確認します(愚かなことですが、以前に行ったことがあります-時々PHPは独自のフォルダー、場合によってはC:\ Windowsで検索します)
  • また、php.iniでdisplay_errorsをOnに、error_reportingをE_ALLに有効にして、phpinfoファイルの一番下にエラーメッセージがあるかどうかを確認してください。通常、少なくともDLLをロードできないことを認識します。
1
Michael Petrov

http://www.imagemagick.org/download/binaries/http://valokuva.org/outside-blog-content/ の両方に、複数のDLLがありますファイル:1つはx64用、もう1つはx86用です。 Windows XPが32ビットの場合は、x86DLLを試す必要があります。

1
Agilox

私はそれが古い質問であることを知っていますが、私はグーグルでここに来たので、おそらく他の人もそうするでしょう。彼らにとって、ここに最も速くて簡単な解決策があります: https://mlocati.github.io/articles/php-windows-imagick.html

それは私にとってはうまくいき、ここで最も投票された回答よりもはるかに簡単です(そして、cmd.comコマンドとしてimagickをインストールするなど、私には複雑すぎるように見えました-何のために?)

0
n.podbielski

Imagick拡張機能をそれらのベースとPHPバージョンに一致させることは非常に複雑です。したがって、インストールの煩わしさを取り除くために、Imagickを出荷するサーバースタックを使用することをお勧めしますそしてそれは WPN-XM のような拡張です。

0
Jens A. Koch