■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
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
ここまで準備
ここからImageMagickのための手順
# 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
… ファイル名は任意
extension = imagick.so
# service php-fpm restart
… こちらも再起動が必要だった
# service httpd restart
これで phpinfo() に「imagick」の項目が表示された
また、以下のようにしてImageMagickを呼び出せるようになる
<?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
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
phpinfo() で確認すると「imagick」の項目が追加されていた
以下のプログラムで画像の作成ができた
<?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');