メモ > サーバ > 各論: プログラミング > ImageMagickを使う
ImageMagickを使う
■PHP7.4で検証したときのメモ
Amazon Linux 2 環境で、ImageMagickのインストールを検証。
# localedef -f UTF-8 -i ja_JP ja_JP
# localectl set-locale LANG=ja_JP.UTF-8
# localectl status
# timedatectl set-timezone Asia/Tokyo
# timedatectl status
# yum -y install httpd
# vi /etc/httpd/conf/httpd.conf
ここまで準備。
ここからImageMagickのための手順。
ServerName www.example.com:80
# service httpd start
# chkconfig httpd on
# vi /var/www/html/index.html
test
# amazon-linux-extras install php7.4 -y
# yum -y install php-cli php-common php-devel php-fpm php-gd php-mbstring php-mysqlnd php-pdo php-xml
# service httpd restart
# yum -y groupinstall "Base" "Development tools"
# yum -y install ImageMagick ImageMagick-devel
# yum -y install php-pear
# pecl install imagick
Please provide the prefix of ImageMagick installation [autodetect] : … Enterを入力。
# vi /etc/php.d/test.ini … ファイル名は任意。
これで phpinfo() に「imagick」の項目が表示された。
また、以下のようにしてImageMagickを呼び出せるようになる。
extension = imagick.so
# service php-fpm restart … こちらも再起動が必要だった。
# service httpd restart
<?php
new Imagick();
■PHP7.4で検証したときのメモ(Ansible用の考察)
以下を実行すると、プレフィックスを決めるように求められる。
カラEnterで次に進むが、AnsibleのPlaybookで処理する場合には問題となる。
# pecl install imagick
Please provide the prefix of ImageMagick installation [autodetect] :
以下のようにすれば自動でEnterが入力されるため、問題無く進む。
# yes '' | pecl install imagick
また、imagickがインストールされているか否かの判定はどうするか。
ひとまず /usr/lib64/php/modules/imagick.so が存在するかどうかの判定にした。
まとめると、以下のコードでimagickをインストールするようにした。
- name: check imagick
stat: path=/usr/lib64/php/modules/imagick.so
register: imagick_bin
tags: imagick
- block:
- name: install imagick
shell: yes '' | pecl install imagick
when: not imagick_bin.stat.exists
tags: imagick
■PHP5.4で検証したときのメモ
CentOS6 上のPHPでImageMagickを動かす - Qiita
https://qiita.com/fulcrum/items/5563f3cc2f976c19f86f
PECL ImageMagick(PHP)インストール手順 - Qiita
https://qiita.com/fumiriku/items/3f4f28ac93c9ef303ddf
# yum install ImageMagick
# yum -y install php-pear
# yum install php-devel --enablerepo=remi … PHP5.4用のリポジトリに変更したため。
# which php
# cd /usr/bin
# wget http://pear.php.net/go-pear.phar
# php go-pear.phar
# vi /etc/php.ini
phpinfo() で確認すると「imagick」の項目が追加されていた。
以下のプログラムで画像の作成ができた。
include_path=".:/usr/PEAR"
# pecl install imagick --enablerepo=remi
Can't find PHP headers in /usr/include/php
The php-devel package is required for use of this command.
ERROR: `phpize' failed … エラーになった。
# yum install ImageMagick ImageMagick-devel ImageMagick-perl … これなら大丈夫だった。
# pecl install imagick
# vi /etc/php.ini
[PECL]
extension=imagick.so
# service httpd restart
<?php
$file = 'data/sample.pdf';
$output = 'data/sample.png';
try {
$im = new Imagick($file . '[0]');
$im->setImageFormat('png');
$im->thumbnailImage(2000, 2000, true);
$im->writeImage($output);
} catch (Exception $e) {
exit('NG:' . $e->getMessage());
}
exit('OK');