2016/03/20 15:17:40

PHPにPECLからImageMagickをインストールする


Warning: Attempt to read property "post_excerpt" on null in /home/kpkyvkzp/public_html/unskilled.site/wp-content/themes/unskilled2/content-header-eyecatch.php on line 5
目次(クリックするとジャンプします)
  • 1:PECLからのインストール
  • 2:依存パッケージのインストール
  • 2.1:debian/ubuntu
  • 2.2:CentOSの場合
  • 2.3:Imagickのインストール
  • 2.4:エクステンションの設定
  • 2.5:phpinfoの確認
  • 3:補足・ハマったポイント
  • 3.1:gccが無い場合のエラー
  • 3.2:pkg-configが無い場合のエラー
  • 3.3:magickwand-configがない場合のエラー
  • 4:まとめ

PECLからのインストール

ImageMagick(PECLからインストールするのはインターフェースであるImagck)はCで書かれているのでPECLからインストールします。(自分でコンパイルすることもできますが)そのためにPECLコマンドが使える必要があります。拙著の記事を参照してください。

依存パッケージのインストール

結構いろんなパッケージが必要なようで、エラーでまくりました。debian/ubuntuとCentOSで必要なパッケージは以下です。(抜けていたらごめんなさい)

debian/ubuntu

debian/ubuntuだと以下のパッケージが必要になると思います。(分けて書きましたがいっぺんにインストールして構いません)

GNU コンパイラコレクション

$ sudo apt-get install gcc

ライブラリ共通インターフェース

$ sudo apt-get install pkg-config

Magick-Wand(ImageMagick C用のAPI)

$ sudo apt-get install libmagickwand-dev

CentOSの場合

CentOSだと以下のパッケージが必要になるようです。(分けて書きましたがいっぺんにインストールして構いません)

GNU コンパイラコレクション

$ sudo yum install gcc

PHPデベロッパツール

$ sudo yum install php-devel

ライブラリ共通インターフェース

$ sudo yum install pkgconfig 

ImageMagickのAPIなど

$ sudo yum install ImageMagick ImageMagick-devel ImageMagick-perl

Imagickのインストール

エクステンションであるImagickPECLコマンドからインストールします。

$ sudo pecl install imagick

エクステンションの設定

ImageMagickのインストールが成功すると以下のような出力(抜粋)があります。最後の行にあるようにphp.iniextension=imagick.soを追加します。

Build process completed successfully
Installing '/usr/lib/php5/20131226/imagick.so'
Installing '/usr/include/php5/ext/imagick/php_imagick_shared.h'
install ok: channel://pecl.php.net/imagick-3.4.1
configuration option "php_ini" is not set to php.ini location
You should add "extension=imagick.so" to php.ini

お使いのエディタでphp.iniを開いて付け加えてください。

$ sudo vim php ini

extension=imagick.so

これでImageMagickが使えるようになるはずです。アパッチモジュールとしてPHPを使っている場合はhttpdの再起動をしてください。CLIではそのまま使えるはずです。

phpinfoの確認

必要であればphpinfo()で情報出力して確認してださい。ImageMagickが有効になっているとimagick module => enabledと出力されるはずです。

$ vim phpinfo.php

<?php
   phpinfo();

以下はコマンドラインでphpinfo()を出力した結果(抜粋)です。

$php phpinfo.php
imagick

imagick module => enabled
imagick module version => 3.4.1
imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel
Imagick compiled with ImageMagick version => ImageMagick 6.8.9-9 Q16 x86_64 2015-01-05 http://www.imagemagick.org
Imagick using ImageMagick library version => ImageMagick 6.8.9-9 Q16 x86_64 2015-01-05 http://www.imagemagick.org
ImageMagick copyright => Copyright (C) 1999-2014 ImageMagick Studio LLC
ImageMagick release date => 2015-01-05
ImageMagick number of supported formats:  => 215
ImageMagick supported formats => 3FR, AAI, AI, ART, ARW, AVI, AVS, BGR, BGRA, BIE, BMP, BMP2, BMP3, BRF, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CRW, CUR, CUT, DCM, DCR, DCX, DDS, DFONT, DJVU, DNG, DOT, DPX, DXT1, DXT5, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, EXR, FAX, FITS, FRACTAL, FTS, G3, GIF, GIF87, GRADIENT, GRAY, GROUP4, GV, HALD, HDR, HISTOGRAM, HRZ, HTM, HTML, ICB, ICO, ICON, INFO, INLINE, IPL, ISOBRL, JBG, JBIG, JNG, JNX, JPEG, JPG, JSON, K25, KDC, LABEL, M2V, M4V, MAC, MAP, MASK, MAT, MATTE, MEF, MIFF, MNG, MONO, MOV, MP4, MPC, MPEG, MPG, MRW, MSL, MSVG, MTV, MVG, NEF, NRW, NULL, ORF, OTB, OTF, PAL, PALM, PAM, PANGO, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG00, PNG24, PNG32, PNG48, PNG64, PNG8, PNM, PPM, PREVIEW, PS, PS2, PS3, PSB, PSD, PTIF, PWP, RADIAL-GRADIENT, RAF, RAS, RAW, RGB, RGBA, RGBO, RGF, RLA, RLE, RMF, RW2, SCR, SCT, SFW, SGI, SHTML, SIX, SIXEL, SPARSE-COLOR, SR2, SRF, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TTC, TTF, TXT, UBRL, UIL, UYVY, VDA, VICAR, VID, VIFF, VIPS, VST, WBMP, WMF, WMV, WMZ, WPG, X, X3F, XBM, XC, XCF, XPM, XPS, XV, XWD, YCbCr, YCbCrA, YUV

Directive => Local Value => Master Value
imagick.locale_fix => 0 => 0
imagick.progress_monitor => 0 => 0
imagick.skip_version_check => 0 => 0

というか画像フォーマットってこんなにあるんですね…。拡張子の大半知らんぞ…。

補足・ハマったポイント

@MINOが作業時に出したエラーを載せておきます。インストール結構何回もやり直しました…。トラブル時の参考にどうぞ。

gccが無い場合のエラー

CentOS7って最初からgcc入っていないみたいですね。エラーでました。

checking for cc... no
checking for gcc... no
configure: error: in `/var/tmp/pear-build-rootE9NsU2/imagick-3.4.1':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
ERROR: `/var/tmp/imagick/configure --with-imagick' failed

pkg-configが無い場合のエラー

こんなエラーがでてインストールが中止になるかもしれません。ライブラリを利用する際に共通インターフェースを提供するpkg-configがなかったために中断されたときの出力です。(例はdebian/ubuntuででたエラーです)

checking for pkg-config... no
pkg-config not found configure: error: 
Please reinstall the pkg-config distribution ERROR: `/tmp/pear/temp/imagick/configure --with-php-config=/usr/bin/php-config --with-imagick' failed

magickwand-configがない場合のエラー

Magickwand-configが無いとこんなエラーがでてインストールが中止になります。(debian/ubuntuでlibmagickwand-devがない場合です)

checking ImageMagick MagickWand API configuration program... 
checking Testing /usr/local/bin/MagickWand-config... 
Doesn't exist checking Testing /usr/bin/MagickWand-config... 
Doesn't exist checking Testing /usr/sbin/bin/MagickWand-config... 
Doesn't exist checking Testing /opt/bin/MagickWand-config... 
Doesn't exist checking Testing /opt/local/bin/MagickWand-config... 
Doesn't exist configure: error: not found. 
Please provide a path to MagickWand-config or Wand-config program. ERROR: `/tmp/pear/temp/imagick/configure --with-php-config=/usr/bin/php-config --with-imagick' failed 

まとめ

PECLコマンドのインストール

依存パッケージのインストール

debian/ubuntu

  • gcc
  • php-dev
  • pkg-config
  • libmagickwand-dev

CentOS

  • gcc
  • php-devel
  • pkgconfig
  • ImageMagick
  • ImageMagick-devel
  • ImageMagick-perl

PECLからimagickをインストール

インストール後、php.iniextension=imagick.soを追記