Leopard(Mac OS X 10.5.x)でPHP + MySQLの環境構築する方法を紹介します。

PHPとMySQLのインストールに関しては以下を参照してください。

基本的にはこれで完了なのですが、Mac OS X用の.pkgファイルからMySQLをインストールすると、MySQLのソケットファイル(mysql.sock)一般的な場所とは違う場所に置かれるようになっています。

そのため、デフォルトでPHPから参照する場所にはなく、MySQLに接続できない状態になっています。

この問題の解決方法は以下の2通りです。

  • php.ini」を編集して「mysql.sock」を参照する場所を変更する。
  • my.cnf」を編集して「mysql.sock」を配置する場所を変更する。

以下で詳細な方法を書いておきます。

php.ini」を編集する場合
  1. Terminal(ターミナル:Terminal.app)で以下のコマンドを実行して「/etc/php.ini」をエディタで開きます。

    /etc/php.iniがない場合は、1行目のコマンドを実行し、/etc/php.ini.defaultをコピーします。既に/etc/php.iniが存在する場合は1行目は省略してください。

    1. sudo cp -i /etc/php.ini.default /etc/php.ini
    2. sudo chmod 666 /etc/php.ini
    Terminalで動作するエディタで編集する場合
    • sudo emacs /etc/php.ini
    emacs」の部分は「nano」でも「vi」でも何でもOKです。
    参考:LeopardのTerminalでEmacsを起動できない時の対処法
    mi等のテキストエディタで編集する場合
    • sudo open -a /Applications/mi.app /etc/php.ini
    /Applications/」以下は適当に置き換えてください。私の場合はエイリアスを置いているので上記コマンドでもmiが起動しますが、デフォルトでは「/Applications/mi[version]/mi.app」となると思います。
  2. 760(or 660)行目付近にある「mysql.default_socket =」の部分を以下のように書き換えて、「/tmp/mysql.sock」を参照するように設定します。

    • mysql.default_socket = /tmp/mysql.sock

    「=」以降に「/tmp/mysql.sock」以外の値が既に設定されていていた場合はmy.cnf」を編集する場合の方で対応した方が良いと思われます。

  3. php.iniを編集して保存したら、以下のようにアクセス権を戻してApacheを再起動して設定を反映させます。

    1. sudo chmod 644 /etc/php.ini
    2. sudo apachectl graceful

    これで作業は完了です。

    Apacheの再起動に関しては「システム環境設定 > 共有 > Web共有」を一旦無効にして、有効に戻すという方法もあります。

my.cnf」を編集する場合
  1. Terminal(ターミナル:Terminal.app)で以下のコマンドを実行して、「/etc/my.cnf」をエディタで開きます。

    /etc/my.cnf」が既に存在する場合は1行目は無視してください。「i」オプションを付けているので、既に存在していた場合はキャンセルしてください。

    1. sudo cp -i /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
    2. sudo chmod 666 /etc/my.cnf
    3. sudo emacs /etc/my.cnf

    my-medium.cnfの部分は、my-small.cnf, my-large.cnf, my-huge.cnf等、お好きなファイルをコピーしてください。

    また、Emacs以外のエディタを利用する場合は3行目を適当に読み替えてください。

  2. エディタで開くと、「[client]」と「[mysqld]」のそれぞれの下に以下のような行があるので、そこを書き換えます。

    • socket = /tmp/mysql.sock

    以下のように書き換えます。

    • socket = /var/mysql/mysql.sock
  3. 編集内容を保存したら、以下のコマンドを実行して、アクセス権を元に戻してMySQLサーバを再起動します。

    1. sudo chmod 644 /etc/my.cnf
    2. /Library/StartupItems/MySQLCOM/MySQLCOM stop
    3. /Library/StartupItems/MySQLCOM/MySQLCOM start

    2,3行目は「MySQLStartupItem.pkg」からインストールしている必要があります。

    また、「MySQL.prefPane」がインストールされている場合は、2,3行目を実行せずに「システム環境設定」から再起動してもOKです。

これで環境設定は完了です。MySQLを利用するPHPアプリケーションは問題なくインストールできると思います。

多分、どっちの方法が良いのかっていうのが気になる方も居ると思いますが、一概にどちらとは言えません。

しかし、ソケットファイルを/tmp/mysql.sockに置く設定になっているのは「Mac OS X」だけだと思うので、my.cnfを編集する方法の方が、PHP以外の言語等でも設定を変えたりする手間が省けるかもしれません。

ただ、Mac OS X用のインストーラ等を利用した場合、デフォルトで/tmp/mysql.sockを見る設定になっている可能性もなきにしもあらずです。