macOS Sierra正式版がリリースされてから1ヶ月が経ち、ようやく修正版の10.12.1がリリースされました。メジャーアップデート直後恒例の不具合も対処され、プリンター等周辺機器のドライバも一通り出揃いましたので、様子見勢もそろそろアップデート実施時期かと思われます。
気になるのはこの1ヶ月散見された「macOS Sierraにアップデートしたら○○が消されてローカル開発環境に不具合が!」といった類のブログ記事。こうなってしまうと不具合の原因の切り分けがとても面倒臭そうです。
そこで一見手間に思えますが、ここは潔くmacOSをクリーンインストールして、復習がてら必要最小限の超シンプルな開発環境を再構築してみたいと思います。
macOS Sierraのクリーンインストール後、早速ターミナルを起動してApaheの起動コマンドを打ってみます。
sudo apachectl start
そしてブラウザを起動してlocalhostにアクセスしてみます。
従来通りApacheは最初からmacOSにインストール済で即稼働可能になっているようです。
ユーザーフォルダに「Sites」という名のフォルダを作成します。
次にApacheがこのフォルダをドキュメントルートとして読みに行くように、そしてその中のphpファイルを実行してくれるように「httpd.conf」「httpd-userdir.conf」「*ユーザー名*.conf」「php.ini」の4つの設定ファイルを編集します。
Finderメニューの「移動」→「フォルダへ移動…」をクリック。
「/etc/apache2/」と入力して「移動」をクリック。
バックアップのため「httpd.conf」を複製。
ファイル操作の度にパスワードを求められるので、以降この画面が出たらmacログイン時のパスワードを入力。
お好みのエディターで「httpd.conf」を開きます。
#LoadModule php5_module libexec/apache2/libphp5.so
↓
LoadModule php5_module libexec/apache2/libphp5.so
169行目付近の上記項目のコメントアウトを外して保存します。
これでApache起動時にphp5のモジュールが読み込まれて、ドキュメントルート内のphpファイルを実行してくれるようになります。
次にApacheにユーザーフォルダを読みに行かせる設定をします。
Finderメニューの「移動」→「フォルダへ移動…」をクリックし、フォルダの場所欄に「/etc/apache2/extra/」と入力して「移動」。
「httpd-userdir.conf」をエディターで開きます。
#Include /private/etc/apache2/users/*.conf
↓
Include /private/etc/apache2/users/*.conf
16行目のコメントアウトを外して保存します。
Finderメニューの「移動」→「フォルダへ移動…」をクリックし、フォルダの場所欄に「/etc/apache2/extra/」と入力して「移動」。
<Directory "/Users/*ユーザー名*/Sites/"> AllowOverride All MultiviewsMatch Any Require all granted </Directory>
この場所に上記の内容でファイルを新規作成し、「*ユーザー名*.conf」というファイル名で保存します。設定ファイル中とファイル名の「*ユーザー名*」は、ログイン中のユーザー名(半角英字のユーザーフォルダ名)に置き換えて下さい。
「php.ini」に関してはデフォルト設定のテンプレートファイルをコピーするだけです。ターミナルで以下のコマンドを実行します。
sudo cp -p /etc/php.ini.default /etc/php.ini
以上で設定は終了です。
最後に設定内容を反映させるために、ターミナルで下記コマンドを実行しApacheを再起動します。
sudo apachectl restart
念のため、macを起動したときにApacheも自動起動するようにしたいときは
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
です。
テストしたいHTMLファイルやPHPファイルを、最初に作った「Sites」フォルダにコピーします。
その後ブラウザでURL「http://localhost/~*ユーザー名*/ファイル名/」にアクセスすれば動作を確認できます!
XAMPPやMAMPやVirtualBOXを使用してテスト用仮想サーバーを立てるのもアリですが、ローカル上のファイルを直接編集してブラウザでリロードするだけでテストできるお手軽さはやっぱり手放せません。個人的にはCSV数百行レベルのデータしか扱わないので、わざわざデーターベースを稼働させる必要もないと思っています。
私の環境では何故かそのままでもDate関数がらみのエラーは出ないですが、もし「/var/log/apache2/」フォルダの「error_log」に下記のエラーが記録されるようなら、、
PHP Warning: date(): It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Asia/Tokyo’ for ‘JST/9.0/no DST’ instead
「/etc/」フォルダ内の「php.ini」の下記の行を訂正してタイムゾーンを指定してやりましょう。
;date.timezone =
↓
date.timezone = Asia/Tokyo