OSがインストールされた状態で既にhttpサーバもphpもインストールされているので設定だけで済んだ。しかしCGI版のPHPは入ってないみたいなので別にインストールする必要がある。でもまあ通常はapacheのモジュールでPHPを実行するのでこのままでも問題ないかと。以下は作業した時のメモ。
Apacheの設定と起動
以前はweb共有の設定画面がシステム環境設定画面にあったようだがOSX10.8では見当たらない。httpdはapacheなので設定ファイルを見てみる。
$less /etc/apache2/httpd.conf
DocumentRoot “/Library/WebServer/Documents”
の記述があった。
/Library/WebServer/Documents/が全体のrootディレクトリのようなのでこの中身を見てみる。
$ls -la /Library/WebServer/Documents/ drwxr-xr-x 5 root wheel 170 8 25 2012 . drwxr-xr-x 5 root wheel 170 8 25 2012 .. -rw-r--r-- 1 root wheel 3726 8 25 2012 PoweredByMacOSX.gif -rw-r--r-- 1 root wheel 31958 8 25 2012 PoweredByMacOSXLarge.gif -rw-r--r-- 1 root wheel 44 2 11 17:55 index.html.en
index.html.enがデフォルトで表示されるみたい。Finder上では/Libraryのフォルダ名は/ライブラリになっている。とりあえずhttpdを起動して見る。
$sudo apachectl start $curl http://localhost/ <html><body><h1>It works!</h1></body></html>
index.html.enの中身が表示されたのでhttpdが起動できているのを確認する。httpd.confのほかの部分を見てみる。
#エラーログの場所
ErrorLog "/private/var/log/apache2/error_log"
#アクセスログの場所
CustomLog "/private/var/log/apache2/access_log" common
#
# "/Library/WebServer/CGI-Executables" should be changed to whatever your ScriptA
liased
# CGI directory exists, if you have that configured.
#
<Directory "/Library/WebServer/CGI-Executables">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
デフォルトでCGIの実行が許可されているのは
/Library/WebServer/CGI-Executables
手っ取り早くCGIを使いたい場合はここを使えはよいと。
<IfModule alias_module>
...
ScriptAliasMatch ^/cgi-bin/((?!(?i:webobjects)).*$) "/Library/WebServer/CGI-Executables/$1"
</IfModule>
URLのaliasは/cgi-bin/が割り当てられてている。http://localhost/cgi-bin/でOK。普通はapacheのモジュール使うからCGIはあんまり使う機会がない。
PHPの設定
apacheでPHPが動くように設定を行う。
$sudo vi /etc/apache2/httpd.conf
#LoadModule php5_module libexec/apache2/libphp5.so
の行を探して
LoadModule php5_module libexec/apache2/libphp5.so
先頭の#を取り除いて保存する。
動作用確認用のPHPファイルを作成。
$sudo vi /Library/WebServer/Documents/test.php
<? phpinfo() ?>
を書いて保存。
apacheを再起動する。
$sudo apachectl restart
PHPが動いているか確認する。
$curl http://localhost/test.php
php設定のhtmlが見えればOK
/Users/myname/Sites/
をユーザの公開ディレクトリにする。mynameはログインユーザアカウント名になる。ディレクトリがないなら作成しておく。
$mkdir ~/Sites
ちなみにSites以外のディレクトリ(wwwとか)では動作しなかった。OS自体の制限のような気がする。ユーザ専用の設定ファイルを作成する。
$sudo vi /etc/apache2/users/myname.conf
<Directory "/Users/myname/Sites/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
を書き込んで保存する。
apacheを再起動する。
$sudo apachectl restart
先ほど書いたphpをコピーして見えるか確認してみる。
$cp /Library/WebServer/Documents/test.php ~/Sites/ $curl http://localhost/~myusername/test.php
php設定のhtmlが見えればOK
次にindex.phpがデフォルトで表示されるようにしておく。
$sudo vi /etc/apache2/httpd.conf
DirectoryIndex index.html
の部分を
DirectoryIndex index.html index.php
のようにindex.phpを追加しておく。
apacheを再起動して確認する。
$sudo apachectl restart $curl http://localhost/~myusername/
PHP設定のHTMLが見えればOK
HTTPサーバを終了するには
$sudo apachectl stop