- 2008.07.01 Tue 12:59
php : mb_convert_encodingを使うのに苦労した話
仕事でサイトのお問い合わせフォームをつくることになったので、ネットからフリーのPHPスクリプトを落とし、カスタマイズして設置しようとしたのですが、こんなエラーがでてしまいました。
どうやらmb_convert_encoding()関数が引っ掛かっているらしい。とりあえずの対処として、mb_convert_encoding()の部分を一度削除してプログラムが動くかどうか試してみたところ、フォームからメールは一応届いたので、この関数がネックになっていることは間違いなさそうです。しかし、届いたメールはメールソフト側で表示エンコードを変更しなければ文字化けしてしまっていますので、やはりこの関数は使いたい・・・。
エラー文をみると、これはPHPにマルチバイト文字列を扱う関数「mbstring」が設定されていないためだと思われます。今回利用しているサーバーは先日契約したばかりの専用ホスティングサーバーだったため、PHPはインストールだけして初期設定のままだったことに原因がありました。
そこで、php.iniをチェックすると、案の定mbstringに該当する行(extension=php_mbstring.dll)がコメントアウトされています。よし、ではここを修正して・・・と思ったのですが、FTPにrootでログインできないのでphp.iniをいじる権限がありませんでした。ならば.htaccessを利用して!と思い、調べてあれこれ試したのですが、書き方が悪かったのか、どれもうまく動きませんでした。(2008/11/09追記:このころはTelnetでログインできるということすら知らなかった・・・。いまだにコマンドラインでのコンフィグは緊張してしまいますw)
結局、サーバーにPHPを再インストールすることにしました。今回のサーバーはPHPのインストールにvinstallコマンドが使えるものでしたので、インストール中にオプションとしてMultibyteモジュールにチェックをいれ、再インストール。
すると難なく使えるようになったのでした。自分でPHPとか入れてしまうと、この手のエラーには結構頻繁に出くわすのかもしれませんね。いい勉強になりました。
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://haruka.sugawa.in/note/php/38/trackback
- Listed below are links to weblogs that reference
- mb_convert_encodingを使うのに苦労した話 from haruka.sugawa