ImageMagickはプラグラムから利用できる画像の操作が可能なソフトウェアパッケージで、Windows XPの環境にXAMPPをインストールし、PHPから利用するようにするための設定において苦労したため、自分用のメモとしてアップする。
まず冒頭にもあるようにOSはWindows XP。XAMPPのバージョンは1.7.7です。Apachのバージョンは2.2.21、PHPは5.3.8。
Googleで検索するとバージョンは異なるが、WindowsにXAMPPをインストールし、PHPからImageMagickを使うための設定についていくつか記事を発見した、しかしどれを試しても私の環境ではエラーが出て、Apachごと落ちてしまうという障害が起きてしまった。
結論として私の環境下における設定は以下のようになった。
1.image_magick Q16版インストール。http://www.imagemagick.org/script/index.php
(Binary ReleasesのWindowsより。。。)
2.http://www.sk89q.com/2010/03/vc6-windows-binaries-for-imagick-2-3-0/よりモジュール(V6orV9)をダウンロード
3.ダウンロードしたものを/xampp/php/ext/へ移動
4.php.iniにextension=php_imagick_ts.dllを記述(ダウンロードしたファイル名)
まず1.について。
ImageMagickにはQ8とQ16のバージョンがあって、画像の内部形式のビット深度が異なり、Q8は0~255、Q16は0~65535の画素を扱うことができる。マシンスペックによってはQ16は大変重くなるそうなんですが、ここ最近販売されているようなマシンスペックなら問題なく動くと思う。
2.について。ここでダウンロードしているのはPHPでImageMagickを使うためのモジュールであり、PHPのコンパイラのバージョンと一致したものを用意しないといけない。phpinfoより自分の環境ではMSVC9(Visual C++ 2008)とあったので、モジュールもV9に対応したものをダウンロードすること。また、ダウンロード先には「thread-safe」と「non-thread-safe」があり、phpinfoの「Thread Safety」がenabledであった場合には、「php_imagick_ts.dll」を、disabledであった場合には、「php_imagick_nts.dll」をダウンロードすること。
3.4.については特記することはなし。
以上で自分の環境ではPHPでImageMagickを利用することができた。再現もできたため現時点においては問題ないが、他の環境でも再現できるか機会があったらやってみようと思う。
この記事に関しましては、コメント機能を開放しています。著者にご連絡をご希望の方は、メッセージを残してください。
以下、バイナリデータを扱うことができない関数の一覧。
ereg_replace() ・・・ 5.3.0 で 非推奨
eregi() ・・・ 5.3.0 で 非推奨
eregi_replace() ・・・ 5.3.0 で 非推奨
split() ・・・ 5.3.0 で 非推奨
spliti() ・・・ 5.3.0 で 非推奨
include()
include_once()
require()
require_once()
fopen()
file_get_contents()
readfile()
basename()
他のブログでも取り上げられているWordpress標準のプラグイン「Akismet」。コメントスパムの投稿を阻止するプラグインなんですが、改めてその精度には驚かされます。
無料のブログサービスなんかを利用していてもコメントスパムは後を絶たず、様々な国から無作為に送信されているようですが、WordPressも例外ではありませんよね。
以前当方は「Akismet」を利用していなかったのですが、他のブログでの評価を見て半信半疑で利用してみたところ、私の場合では全てのコメントスパムを阻止してくれています。
多くの無料で使えるブログサービスでこれほどのコメントスパム阻止をしてくれるツールは「Akismet」以外みたことありませんでした。
FC2などのブログもこれほどの精度あるスパム防止システムを導入すれば、もっとユーザーから喜ばれそうなのに、なんて思ったりもしました。
UTF-8で作成されたテーブル情報を、コマンドプロンプトでselect文などで出力させると文字化けしました。解決までに時間がかかったので記録しておきます。
今回のケースはDBをUTF-8で作成。コマンドプロンプトではUTF-8は利用できないため、自然と文字化けが起こります。様々なWEBサイトを拝見しましたが、バージョンによって対策は大きく異なっているようです。
Mysqlバージョンは5.1.41。
Mysqlにログインしたら【set names sjis】を入力。
select文で出力したところ、無事解決しました。
バージョンによっては、my.iniの[client]を修正とか、chcpコマンドでコマンドプロンプトの文字コードを変更するとありましたが、当方の環境の場合、【set names sjis】だけで対策できました。
文字コードの設定が異なるデータをdumpすると文字化けが発生していまいます。解決までに予想以上に時間がかかったため、メモ・・・。
今回MySQLをインストールした手段は、XAMPPパッケージ。Windows XPマシンで、MySQLバージョンは5.141。MySQLの文字コードの初期設定は「latin1」。dumpするテーブルデータは「cp932(※1)」。
都合により「cp932」の文字コードでそのまま読み込ませたかったので、MySQLの文字コードを「cp932」に設定する。
まず、初期設定の文字コードを判断するために、「show variables like “char%”」とコマンドを。SHOW VARIABLES 構文はMySQLのシステム変数の値を表示するもの。likeを指定することでパターンと一致する変数のみを表示することができる。

既に文字コードを設定した後なので「cp932」になっているが、初期設定では「latin1」になっている。
ここから文字コード変更の作業へ・・・。
XAMPPによるセットアップでMySQLがインストールされているフォルダに「my.ini」がある。これをテキストエディタで開き、[mysqld]・[mysql]・[mysqldump]を修正。
●[mysqld]
・default-character-set=cp932を追加。
(文字コードの指定)
・skip-character-set-client-handshakeを追加。
(クライアント情報を無視して、サーバーのデフォルトのキャラクタセットを使用。「character-set-client-handshake 」と記述するとクライアント情報を無視しないようになる。)
参照:http://dev.mysql.com/doc/refman/5.1/ja/server-options.html
●[mysql]
・default-character-set=cp932を追加。
●[mysqldump]
・default-character-set=cp932を追加。
以上3箇所を修正した後、MySQLを再起動。再び「show variables like “char%”」で文字コードを確認すると画像のように変更されている。
そして、目的であったデータをdumpしたところ、文字化けは解消していました。
この件に関して、自分の環境にあった解決方法を見つけるまでかなり時間がかかりました・・・。
(※1)Windowsの文字コードは「シフトJIS」を拡張した「cp932」。①などはcp932によるもので、シフトJISでは存在しない。