このサイトではすでに URL にマルチバイト文字が使えるようになっているが、検証用 Local の Mac OS X 10.10 では URL にマルチバイトを指定できない。文字化けして URL 先に飛ばない。
Mac OS X Server 10.6 まではあった mod_encoding モジュールを Apache に導入しないとだめらしい。
mod_encoding をソースから Build しようと色々試したが、Linux 向けの記事が大半で、ビルドできず結局あきらめた。となると、最近オクで安価になってきている、Mac OS X Server 10.6 を狙って試してみるのもいいではないかと、ヤフオクで 4,000 円ほどでぽちり。ただ Mac Mini 同梱のメディアというのが気にはなった。
不安は的中し、VMWare Fusion のゲスト OS として install しようとするも
「お使いのコンピュータに OS X をインストールできませんでした」
とはじかれてしまう。そこで、DVD 中のパッケージファイルからモジュールを取り出すことに方針転換。
Mac OS Xのパッケージファイルを操作するを参考にパッケージファイルからモジュールを取り出した。ちなみにモジュール mod_encoding が含まれているパッケージはこちら。
/Volumes/Mac\ OS\ X\ Server\ Install\ Disc/System/Installation/Packages/ServerEssentials.pkg
ところが、OS X 10.10 では httpd.conf で mod_encoding を有効にしても、httpd 自体が apachectl start で起動しない。error もなしにただ起動しない。
$ sudo /usr/sbin/httpd-wrapper -D FOREGROUND
で Apache を起動しようとするとこんなエラーが出る。
httpd: Syntax error on line 66 of /private/etc/apache2/httpd.conf: API module structure ‘encoding_module’ in file /usr/libexec/apache2/mod_encoding.so is garbled – expected signature 41503234 but saw 41503232 – perhaps this is not an Apache module DSO, or was compiled for a different Apache version?
おそらくバージョン不整合(mod_encodingが古い)の問題と判断して、Brew で Apache 2.2 をインストールした。
$ brew tap homebrew/dupes
$ brew tap josegonzalez/homebrew-php
$ brew install httpd22
ところが今度は標準の /usr/libexec/apace2 にある php のモジュール libphp5.so と相性がだめだ(Apache がエラーを吐いて起動できない)。
$ sudo apachectl start
httpd: Syntax error on line 62 of /usr/local/etc/apache2/2.2/httpd.conf: Cannot load /usr/libexec/apache2/libphp5.so into server: dlopen(/usr/libexec/apache2/libphp5.so, 10): Symbol not found: _ap_unixd_config\n Referenced from: /usr/libexec/apache2/libphp5.so\n Expected in: /usr/local/Cellar/httpd22/2.2.31/bin/httpd\n in /usr/libexec/apache2/libphp5.so
共有ライブラリのことはとんと分からないので精査せず、またしてもダウングレード作戦で、標準の php5.5 を brew の 5.4 にダウングレード。
$ brew tap homebrew/dupes
$ brew tap josegonzalez/homebrew-php
$ brew install php54 –homebrew-apxs
/usr/local/etc/apache2/2.2/httpd.conf の追加・変更内容
LoadModule encoding_module /usr/libexec/apache2/mod_encoding.so
<ifModule mod_encoding.c>
EncodingEngine on
SetServerEncoding UTF-8
DefaultClientEncoding JA-AUTO-SJIS-MS SJIS
AddClientEncoding UTF-8 “Mozilla .* Linux”
</IfModule>
#LoadModule php5_module libexec/apache2/libphp5.so
LoadModule php5_module /usr/local/Cellar/php54/5.4.45_3/libexec/apache2/libphp5.so
これでめでたく OS X ローカル環境でも、アップロード先の wordpress と同じ挙動で動くようになった。
時間があれば、 –homebrew-apxs を指定した brew php5.5 or 5.6 で試してみたい。