2014年5月7日水曜日

Mac OS X Mavericks‎でPHPを使う

Mac OS X Mavericks‎でPHPを動かしたくなったのでやってみた。

聞いてはいたけど、Macには始めからApacheとPHPがインストールされているのでインストールするものは本当に何も無かった。設定ファイルを少し書き換えるだけでいい。Windowを考えたら本当に簡単だ。

設定ファイルは/private/etc/apache2/httpd.confだ。オリジナルをコピーしておこう。

# cd /private/etc/apache2/
# sudo cp httpd.conf httpd.conf.orig

編集しよう。viでもemacsでもいい。

# sudo emacs httpd.conf

まずPHPを使えるようにする。デフォルトではPHPが使えないように設定がコメントされているので、その行のコメントをはずす。118行目だった。

LoadModule php5_module libexec/apache2/libphp5.so

デフォルトの設定では

DocumentRoot "/Library/WebServer/Documents"
ErrorLog "/private/var/log/apache2/error_log"
CustomLog "/private/var/log/apache2/access_log" common

となっている。

これらの場所はアクセスしにくいし、ログを切り分けて問題解決をしやすくしたいので、ポート8000のバーチャルホストを立てることにした。

バーチャルホストの設定を追加する。DocumentRootやErrorLog、CustomLogは任意の場所でいい。

## 独自設定(ポート8000バーチャールホスト)
Listen 8000
<VirtualHost *:8000>
    DocumentRoot "/Users/jun/var/htdocs"
    ServerName localhost
    ErrorLog "/Users/jun/var/log/apache-error.log"
    CustomLog "/Users/jun/var/log/apache-access.log" common
    DirectoryIndex index.php index.html
    <Directory "/Users/jun/var/htdocs">
        Options Indexes Includes FollowSymLinks
        AllowOverride All
        order deny,allow
        allow from All
    </Directory>
</VirtualHost>

ただし、「/」からDocumentRootに至るまでの全てのディレクトリのパーミッションが755になっているかチェックした方がいい。でないとアクセスが拒否される。自分の場合、/Users/junのディレクトリは755になっていなかったので

# sudo chmod 755 /Users/jun

でパーミッションを変更した。

設定はこれで終了。Apacheを起動する。

# sudo apachectl start(起動)
# sudo apachectl restart(再起動)
# sudo apachectl stop(停止)

テストのため、/Users/jun/var/htdocs/index.phpを次のように作成する。

<?php
phpinfo();
?>

ブラウザで

http://localhost:8000

にアクセスすればPHPのバージョンなどが表示され、PHPが動作していることを確認できるはずだ。

あとはhtdocsの中にどんどんHTMLやPHPなどのファイルを置いていけばいい。

ただ、プロジェクトによってhtdocsの中味を簡単に他のディレクトリに切り替えたくなるだろう。その場合はシンボリックリンクをはっておくといい。

# ln -s ターゲットディレクトリ /Users/jun/htdocs

そうすればhttpd.confを設定し直さなくても、シンボリックリンクを切り替えるだけで中味が入れ替わる。ここでも、「/」からターゲットディレクトリに至るまでのディレクトリのパーミッションが755になっているかどうか注意が必要だ。

Macは楽だねぇ(*^_^*)