Memo

メモ > サーバ > 各論: プログラミング > 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
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');

Advertisement