読者です 読者をやめる 読者になる 読者になる

AWS / PHP / Python ちょいメモ

amazon web service , PHP, Python を使ったときのメモ。日本語でググってもわからなかった事を中心に。

Imagick for PHP をインストール on RHEL

PHP RedHat CentOS

UbuntuからRedHatに引っ越したとろ、PHPのImagick extensionがyumで取得できない事をに焦った時の対応履歴。PPAみたいなリポジトリ追加しての対応方法もあるんだろうなぁと思いつつ、上手くいったので make install っぽい形で進めました。

手順

インストール

後述のPECLでimagickをインストールする時に、gccコンパイルが走るので、必要なものを一式揃えます(php-pear, gccが入ってない環境では、それも入れてください)。

$ sudo yum install ImageMagick ImageMagick-devel ImageMagick-perl

インストールを試すも、エラー。

# pecl install imagick
...
running: phpize
Can't find PHP headers in /opt/rh/php55/root/usr/include/php
The php-devel package is required for use of this command.
ERROR: `phpize' failed

php-devel が不足していました。SCLでPHP5.5をいれてるので、次のパッケージを追加。

$ sudo yum install php55-php-devel

再度インストールを試みると、ソースが取得されて、自動で configure, make と進みます。

# pecl install imagick
downloading imagick-3.1.2.tgz ...
Starting to download imagick-3.1.2.tgz (94,657 bytes)
.....................done: 94,657 bytes
15 source files, building
...
Build process completed successfully
Installing '/opt/rh/php55/root/usr/lib64/php/modules/imagick.so'
Installing '/opt/rh/php55/root/usr/include/php/ext/imagick/php_imagick.h'
Installing '/opt/rh/php55/root/usr/include/php/ext/imagick/php_imagick_shared.h'
Installing '/opt/rh/php55/root/usr/include/php/ext/imagick/php_imagick_defs.h'
install ok: channel://pecl.php.net/imagick-3.1.2
configuration option "php_ini" is not set to php.ini location
You should add "extension=imagick.so" to php.ini

有効化

.so ファイルが作成されている事を、念のため確認

$ ls /opt/rh/php55/root/usr/lib64/php/modules/imagick.so
/opt/rh/php55/root/usr/lib64/php/modules/imagick.so

新たに ini ファイルを作成して組み込む。

$ sudo vi /opt/rh/php55/root/etc/php.d/imagick.ini
extension=imagick.so

確認

次のコマンドで、レスポンスがあればOK。

$ php -m | grep imagick
imagick

Webで使ってる場合には、FastCGIとかを再起動しておきましょう。phpinfo() で確認しておくと確実ですね。

その他

参考サイト

ほぼ、こちらで紹介されてた手順でいけました。

考慮すべきは、SCL使ってた点だけですかね。

無いと判断した手順

こんな感じで探してみたら、該当しそうなパッケージ名がなかったので前述作業を実施しました。

$ sudo yum list | grep [mM]agick
ImageMagick.i686                6.5.4.7-7.el6_5    @rhel-x86_64-server-6
ImageMagick.x86_64              6.5.4.7-7.el6_5    rhel-x86_64-server-6
ImageMagick-c++.i686            6.5.4.7-7.el6_5    rhel-x86_64-server-optional-6
ImageMagick-c++.x86_64          6.5.4.7-7.el6_5    rhel-x86_64-server-6
ImageMagick-c++-devel.i686      6.5.4.7-7.el6_5    rhel-x86_64-server-optional-6
ImageMagick-c++-devel.x86_64    6.5.4.7-7.el6_5    rhel-x86_64-server-optional-6
ImageMagick-devel.i686          6.5.4.7-7.el6_5    rhel-x86_64-server-optional-6
ImageMagick-devel.x86_64        6.5.4.7-7.el6_5    rhel-x86_64-server-optional-6
ImageMagick-doc.x86_64          6.5.4.7-7.el6_5    rhel-x86_64-server-optional-6
ImageMagick-perl.x86_64         6.5.4.7-7.el6_5    rhel-x86_64-server-optional-6

感想

yum と apt系ツール、パッケージ名も違えば、カバーしてる範囲も大きく違いますよね。
別プロジェクトなんで、当たり前といえば、そうなんでしょうが、違うサーバー環境を使うたびに戸惑います(;