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