【PHP】ImageMagickをインストールしたけどエラー

前回のエントリーで【PHP】 ImageMagickをPHPから使うときのメモを書いたけど以下のソースが動かなかった。

$file_name ='a.jpg';
$ext = "jpg";
$image = new Imagick($file_name);
header('Content-type: image/'.$ext);
echo $image;
矩形を描画したりとかは出来たけどファイルを読みこんでどうこうができない。 なのでさらに調べることに。 (もともとMikko’s blogはVC6じゃなくてVC9にしろよってかいてあったきがする。) ちなみに動かなかったときのphpinfoは Compiler MSVC9 (Visual C++ 2008) って書いてあった。 結果的には XAMPPのバージョンによってはphpinfoで見たときにCompilerの項目がMSVC6になっているのでMSVC9にすることが必要。

  • 1.PHPを入れなおす(スレッドセーフ版)
  • 2.ImageMagickのバージョンは最新に。
  • 3.php_imagick_ts.dll(スレッドセーフ版)を入れる
  • 4.php.iniからエラーが出る項目をコメントアウトする

という流れになると思います。 一応書きますが、それなりに長い説明になったので区切ります。 Manual: Using imagemagick with XAMPP on Windows http://www.xoops.org/modules/newbb/viewtopic.php?topic_id=70436 のトピックスから引用

What we need is: PHP 5.3.1 (if you use XAMPP 1.7.3) as VC9 x86 Thread Safe – Take the zip from HERE ImageMagick from HERE – take the latest version. When experiencing problems you have to install Visual C++ 2008 Redistributable Package (see bottom of this page) The php_imagick_ts.dll – get it HERE Installation of all the files (assuming your path to XAMPP is c:/xampp 1. Rename c:/xampp/php to c:/xampp/phpvc6 for good measure, because you need some values from php.ini located in there. 2. Make a new folder called php in c:/xampp. Extract the php.zip and copy the contents of this folder to c:/xampp/php 3. Compare the old php.ini and the new php.ini and make some changes to the new one. Especially watch out for the path to the extension. At the extensions part you have to add one entry: extension=php_imagick_ts.dll 4. Edit c:/xampp/apache/conf/httpd.conf and add the following line at the end of this file: SetEnv MAGICK_HOME C:/xampp/imagemagick 5. Install imagemagick to c:/xampp. Make sure, that adding the path to imagemagick is checked. Other things do not have to be checked. 6. Restart your PC 7. Start XAMPP and have a look at your phpinfo now.

勝手に意訳した

1.XAMPP1.7.3でPHP 5.3.1をVC9スレッドセーフにしろ。zipを以下から落とす。 http://windows.php.net/download/ VC9 x86 Thread Safe (2010-Mar-04 20:11:10)のZIP http://windows.php.net/downloads/releases/php-5.3.2-Win32-VC9-x86.zip あと最新版のImageMagickを落とす http://www.imagemagick.org/script/binary-releases.php#windows (ImageMagick-6.6.1-4-Q16-windows-dll.exeでいいとおもう) http://www.imagemagick.org/download/binaries/ImageMagick-6.6.1-4-Q16-windows-dll.exe さらにVisual C++ 2008ランタイム入れれ。 そして php_imagick_ts.dllをダウンロードしる。 http://valokuva.org/sendfile/imagick/vc9/ts/20090919_0437/php_imagick_ts.dll 2.とりあえず今あるc:/xampp/phpはc:/xampp/phpvc6にリネームしる。 php.zipを解凍してc:/xampp/phpに中身をコピー 3.古いphp.iniはバックアップして必要な分を新しいphp.iniに書き写す。 新しいphp.iniにextension=php_imagick_ts.dllを追加。(もちろんc:/xampp/php/ext/にphp_imagick_ts.dllを設置する) 4.c:/xampp/apache/conf/httpd.confに以下を追記(imagemagickまでのパスは任意で変えて) SetEnv MAGICK_HOME C:/xampp/imagemagick 5.imagemagickをインストールしてなければ4で設定した場所にインストールして、インストール中の環境変数にパスを通すにチェックいれる。 6.マシン再起動 7.XAMPP起動してphpinfoみればimagickの項目が増えている。

たぶんいろいろねえよwwwwwwwwwってapacheがエラーを出すと思います。 なのでさらに調べた結果 http://www.apachefriends.org/f/search.php?st=0&sk=t&sd=d&sid=e21d71f7367c382a563ef5a52ebb87c5&keywords=%2Bphp5ts++&fid[]=16&ch=-1 を参考にした。

Ok, so this is how I done it: unpack it to the xampp/php directory copy(and overwrite) the *.dll from xampp/php to xampp/apache/bin overwrite xampp/php/dev/lib/php5ts.lib with xampp/php/dev/php5ts.lib comment out the following extensions from your php.ini: php_mcrypt.dll // already loaded php_pdo.dll // already loaded php_zip.dll // some funny error about pcre_exec missing in php5ts.dll php_pdo_* not working, but I dont need that atm. everything else works fine for me, after this steps.

とあった。

勝手に意訳してみた

1.phpvc6/extからphp/extへ新しく入れたdllやXAMPPが勝手に入れてたファイルたちをコピーしておく 2.たぶんまだエラーが出るので、phpvc6/devの中身もphp/devへコピーする。怖ければリネームとかしてください。 3.たぶんまだまだエラーが出るので、phpvc6/extrasの中身もphp/extrasへコピーする。 4.たぶんまだまだまだエラーが出るのでphp.iniを書き換えます。 エラーがでるextensionの項目 php_mcrypt.dll // 最初からロードしてる php_pdo.dll // 最初からロードしてる php_zip.dll // php5ts.dllでpcre_execが見つかりません的なエラーがでるのならばこいつも。 php_pdo_* //php_pdo_とつくものもエラー出るからいらん。

こいつらをすべてセミコロンでコメントアウト

そうしたら以下のソースは動いた。

$file_name ='a.jpg';
$ext = "jpg";
$image = new Imagick($file_name);
header('Content-type: image/'.$ext);
echo $image;


Tags:

 
 
 

2 Responses to “【PHP】ImageMagickをインストールしたけどエラー”

  1. Gravatar of imagick実験…するも、失敗 | Maya Web Project Official Blog imagick実験…するも、失敗 | Maya Web Project Official Blog
    20. 1月 2011 at 02:04

    [...] なして?と思いいろいろぐぐると【php】imagemagicをインストールしたけどエラー  | </gecko> さんにまるっと回答が。要するに、テストサーバをひとつ用意しちゃった方が幸せになれ [...]

  2. Gravatar of 通りすがり 通りすがり
    31. 7月 2011 at 06:18

    ある意味、最強の記事。

コメントをどうぞ