そのため、Mountain Lion で MAMP を実行しており、pecl を使用して gmagick と imagick をインストールしました。どちらもリリース候補です (主に、gmagick には安定したリリースがなく、imagick 3.0.0 がインストールされないため、make エラーが発生します)。 )。モジュールは、ターミナルで php -i を実行すると表示されますが、phpinfo() では表示されません。php.ini を確認しましたが、どちらも同じであるため、問題ではありません。 ) であり、phpinfo() および php -i に表示されます。私の質問は、拡張機能が安定していない場合に拡張機能をロードしない構成オプションが PHP にあるということです。ところで、ini ファイルを変更した後、サーバーを再起動しました。
4 に答える
おそらく、マシンに 2 つの php インストールがあるでしょう。Mountain Lion には、php バージョンがプリインストールされた状態で出荷されます。ターミナルで試してlocate php.ini
、インストールされている php.inis の数を確認してください。
phpinfo() ページには、どの php.ini が使用されているかも示されています。phpinfo() に使用されている正確な php.ini を開いて、拡張機能がロードされていることを確認してください。次のような2行があるはずです
extension=/path/to/gemagicext/gmagic.so
extension=/path/to/imagick/imagick.so
php-fpm と nginx サーバーで同様の問題に直面しました。この問題は、更新された php 構成が現在アクティブな php-fpm ワーカー プロセスに反映されていないことが原因でした。更新された拡張情報を取得するには、 fpmプロセスを手動で強制終了し、再起動する必要があります。
私のために働いた手順:
1) アクティブな php-fpm プロセスを探します
ps ax | grep "fpm"
ほとんどの場合、これは複数のプロセスをリストします
2)プロセスを手動で強制終了します
kill -9 [pid_got_from_previous_command]
3) php-fpm プロセスを再起動します。
sudo service php5-fpm start
注:古い子プロセスが古い構成を保持していたため、sudo service php-fpm reload
orのようなものを試してもうまくいきませんでした。sudo service php-fpm restart
アクティブなプロセスを強制終了し、php fpm を再起動すると、phpinfo が更新されました。
CentOS 6.6 x64、php 5.5.27 で同じ問題が発生し、 http://php.net/manual/en/imagick.installation.phpの手順に従いました。
まず、ImageMagick インストールの tar イメージを sourceforge.net/projects/imagemagick/files/ からダウンロードします。
解凍してから、ターミナルから次のコマンドを発行します。
1. "cd ImageMagick-6.9.1-10" - go where you placed the folder
2. ./configure
3. make
4. make install
5. make check
6. install imagick extension from pecl.php.net/package/imagick/download 3.1.2
7. cd imagick-3.1.2
8. phpize
9. ./configure --with-imagick=/opt/local
10. make
11. make install
12. Copy imagick.so in your PHP extensions folder and add extension=imagick.so in php.ini
Apache を再起動します: service httpd restart
この問題は、拡張機能と PHP サーバーの互換性に関連していると確信しています。独自の拡張機能を作成したときに、このような問題に遭遇しました。拡張機能は、次の 3 つの主要な属性で PHP サーバーと互換性がある必要があります。
1- PHP サーバーが構成されている Zend API 番号 ( phpinfo() でこの番号を見つけることができます)。この番号は、ビルド時の拡張ヘッダー ファイルと同じである必要があります。
2- PHP サーバーのコンパイラ バージョンと拡張機能は同じである必要があります。
3- PHP サーバーのスレッド セーフは重要です。スレッドセーフ サーバーを使用する場合は、拡張機能を php スレッド セーフ ライブラリでビルドする必要があります。非スレッド セーフ サーバーを使用する場合は、拡張機能を PHP-nts ライブラリでビルドする必要があります。