とてもハマったので備忘録的にメモ。
正直に白状すると、なんで上手く行かなくて、なんで上手く行ったのか、ちゃんと理解できていない。
大変恥ずかしい話だが、せめて同じ様にハマっている人のお役に立てばと願う。
MacPort を使ったら呆気無く行けました
基本的に@atstyle さんの以下の記事をまるっと真似しただけでいけました。
@atstyle さん、ありがとうございます。
私の場合、Xcode、Command Line Developer Tools、MAMP はインストール済みだったので、MacPorts のインストールからでした。
MacPorts 初期化
MacPorts をインストール後、Terminal で以下のコマンドを端から実行して行くだけ。
echo 'export PATH=$PATH:/opt/local/bin:/opt/local/sbin/' >> ~/.bashrc echo 'export MANPATH=$MANPATH:/opt/local/man' >> ~/.bashrc echo 'source ~/.bashrc' >> ~/.bash_profile sudo port -d selfupdate sudo port -d sync
Perl のパスをMacPorts のものに変更
んでImageMagick とかは私は今のところ用が無いのですっ飛ばして、Perl のパスを変更。
これもTerminal で以下のコマンドを実行して行くだけ。
cd /usr/bin/ sudo mv perl perl.bak sudo ln -s /opt/local/bin/perl /usr/bin/perl
DB関連モジュールをインストール
最後にデータベース関連のモジュールをMacPort を使ってインストール。
@atstyle さんの記事にあるGDやら各種モジュールも今のところ使わないので今回はすっ飛ばしです。
sudo port install p5-dbi sudo port install p5-dbd-mysql
MySQLへの接続時はsocket指定をお忘れなく
普段使わない指定項目だったのでとんと忘れていましたが、DBD::mysql での接続時はsocket 指定が必要です。
ソケット内容については、MAMPのホームディレクトリ(例:http://localhost:8888/MAMP/?language=Japanese)の「ソケット」欄に書いてあるので、それをDBI接続時に指定してやればOKです。
my $DB_SOURCE = "DBI:mysql:database=$dbname;host=$host;mysql_socket=$socket;port=8889";
Apache で実行する際はファイルパーミッションの設定を忘れずに
上記手順でEclipse(EPIC)上では問題なく動く様になったのですが、Apache で動くファイルとInternal Server Error で動かないファイルが出てきてしまいました。
結局、調べてみると原因は何のことはない、ファイルパーミッションを正しく設定できていないことが原因でした。
ForkLift 等のFTPソフトを使って、Internal Server Error を出すファイルのパーミッションの「実行」にチェックを入れてやったところ、問題なく動く様になりました。
結構「あたり前」なことを見落としているケースってあるんですよね。
お恥ずかしい。