MAMP , Eclipse(EPIC)環境下でDBD::mysql のインストールにハマる

投稿者: | 2014/04/02

とてもハマったので備忘録的にメモ。

正直に白状すると、なんで上手く行かなくて、なんで上手く行ったのか、ちゃんと理解できていない。

大変恥ずかしい話だが、せめて同じ様にハマっている人のお役に立てばと願う。

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 を出すファイルのパーミッションの「実行」にチェックを入れてやったところ、問題なく動く様になりました。

結構「あたり前」なことを見落としているケースってあるんですよね。
お恥ずかしい。

 



 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータがどう処理されているか知りたい方はこちらをお読みください