web-dev-qa-db-ja.com

imagickライブラリを読み込めません

ここからimagickをインストールしました (ImageMagick-7.0.3-1-Q16-x64-dll)と からdll(TS 32ビット)ここに 。また、_CORE_RL_*_を_C:\xampp\Apache\bin_にコピーしても、laravelサーバーを実行すると、次のエラーが発生します。

エラー:警告:PHP起動:ダイナミックライブラリ 'C:\ xampp\php\ext\php_imagick.dll'をロードできません-指定されたモジュールが見つかりませんでした。行0の不明

また、dllファイルを_C:\xampp\php\ext\php_imagick.dll_に配置しました。

また、imagickはphpinfo()に表示されます。 enter image description here

laravelを使用して使用すると、次のエラーが発生します。 enter image description here

7

ここで指摘されているように、ImagickをWindowsで動作させることは常に多少の打撃と失敗を経験してきました http://stackoverflow.com/a/36378764/1090867

しかし、それは重要なポイントを逃しています

バイナリをPHPフォルダに入れる必要はありません!

だからここに私がこれをする必要があるときはいつも自分自身に従うステップがある。これは、Apache、nginx、またはIISで機能するはずです。

ステップ1

pHPのバージョンと設定を確認する

enter image description here

バージョン、アーキテクチャ、コンパイラ、スレッドセーフが必要

スレッドセーフが無効になっている場合、これは[〜#〜] nts [〜#〜]が有効になっている[ 〜#〜] ts [〜#〜]

ステップ2

ImageMagickのコピーをインストールし、それがアーキテクチャに一致することを確認します。これも静的バージョンではなくdll.exeである必要があります。

Q8とQ16についてはあなたにお任せしますが、どちらのバージョンでも機能します

http://www.imagemagick.org/script/binary-releases.php#windows

インストールディレクトリ名をC:\Imagemagickのような一般的な名前に変更することをお勧めします。過去にデフォルトのディレクトリ名にPHPおよびWindowsを使用した場合、.

インストールするだけですが、アプリケーションパスの追加にチェックマークを付けてください。通常、レガシーユーティリティもチェックマークを付けます。

enter image description here

インストールしたら、環境変数に移動し、実際にパスにあることを確認します。 phpフォルダーに何もコピーする必要はありません

すべてが正常に機能していることを確認するために、コマンドラインを開き、convert --versionと入力して、応答を取得する必要があります

ステップ3

これは苦労して難しい部分であり、少し試行錯誤することができます。私は以下が10のうち9回動作すると思われる最高のphp_imagick.dllを提供することを発見しました

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

インストールに一致するバージョンを選択するだけです。

これが機能しない場合は、php.netにアクセスして、1つが機能するまで各バージョンを試してください...(最新のものから開始)

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

Php_imagick.dllを取得したら、php/ext/フォルダに配置します

php.iniファイルを見つけたら、一番下(または拡張機能があるところ)に移動してextension=php_imagick.dllを追加します

ステップ4

再起動PHP(またはお使いのコンピューター)してください。別のphp_imagick.dllを試していない場合は、動作しているはずです。

上記が機能しない場合

次に、少し古いバージョンのimagickを試してみます。通常はバージョン6.8.6-8 Q16を使用します。

Windows 7とWindows Server 2008、2008 R2、2012、2012 R2ですべてこれを実際にすべて実行したことに注意してくださいすべてx64とx86 php

これがまだ機能しない場合は、おそらくCORE_RLファイルをimagickディレクトリにコピーする必要があります。これにより、通常、より多くの問題が発生しますが、アイデアが不足している場合は、試してください

18
Avenyet

この問題に遭遇しました。 PHPコマンドライン(PHP CLI)で使用しています。問題は、メインのphp_imagick.dllファイルが持つ依存関係です。PHPは拡張機能を読み込もうとしますが、WindowsはCORE_RL_ DLLを見つけられないため、拡張機能は読み込めず、DLLを読み込めないというエラー/警告メッセージがWindowsがどのようにDLLをロードするかを知るのに役立ちます:

https://msdn.Microsoft.com/en-us/library/windows/desktop/ms682586(v = vs.85).aspx

かなり複雑ですが、Apache /binディレクトリトリックがApacheで機能する理由は、httpd.exeがそのディレクトリにあるためです。ただし、PHP CLIを使用する場合、DLLはphp.exeと同じディレクトリに配置する必要があります。

重複するDLLをフロートさせたくない場合は、php.exeを含むディレクトリをシステムPATHに追加し、そこにすべてのCORE_RL_ DLLを配置します。 PATHは最後に検索されたものですが、正常に動作します。システムのPATHに偽のエントリが必要ない場合は、Apacheの起動時にのみ追加のPATH情報を設定してください。

10
CubicleSoft