プログラムとか全然興味ないけどwebページを作ったり、しょうがなくphpをちょっと触るような『必要だから設定しないといけないけどなぜそうするかはまったく興味がない』人向けのMacローカルサーバー設定の覚え書きメモです。
ここではmacOS Ventura(13.4)でローカルサーバーを動かしてphpの実行環境を作るまでの工程を記載。
なお個人的なニーズで、phpが動くこと以外にバーチャルホストの設定もしています。
なるべく簡素にわかりやすく・・・と思って書いてみるもめちゃくちゃわかりにくいっていう。
やっぱりこういうのはわかりにくいのがデフォルトやね。
なお状態は移行ツールで過去の設定を引き継いでるのが前提なのでここに書かれてることも環境による、となってしまうのがつらいところ。
phpを入れる、その前に…
どこかの段階でphpは入らなくなったらしいので別途インストールする必要がある。
ググった限りHomebrewで入れるのが簡単とあったのでそうする。
なお作業はほぼ全てターミナルから行う。
アプリケーション>ターミナル.appを立ち上げてコマンドラインでの作業になる。
またSitesフォルダがなくなってるので作っておく。
Sitesという名前じゃなくていいと思うけど他を試してないのでわからない。
1:Homebrewのインストール
ここのHomebrewサイトの説明を元にHomebrewをインストールする。
/bin/bas・・・とある部分をターミナルにコピペ。
パスワードを求められたら管理者パスワードを入れる。
完了まで待つと下記が出るのでパスを通すようにする。
(ユーザーフォルダ名)は環境によって違う。
==> Next steps:
- Run these two commands in your terminal to add Homebrew to your PATH:
(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/(ユーザーフォルダ名)/.profile
eval "$(/opt/homebrew/bin/brew shellenv)"
- Run brew help to get started
- Further documentation:
https://docs.brew.sh
ここは要するに下記のように入力すること。
profileファイルが作られて入力される。
echo 'eval $(/opt/homebrew/bin/brew shellenv)' >> /Users/(ユーザーフォルダ名)/.profile
出来たら
source ~/.profile
で反映させる。
profileなのかzprofileなのか環境によって違うみたい。
brew -v
とコマンドラインで打って何か返ってきたらちゃんとインストールできてる。
2:phpのインストール
ここのページを参照した。
brew search php
でインストール可能なパッケージを探す
brew install php@8.0
でインストールスタート
完了したら下記のように次にやることをお知らせしてくる。
To enable PHP in Apache add the following to httpd.conf and restart Apache:
LoadModule php_module /opt/homebrew/opt/php@8.0/lib/httpd/modules/libphp.so
SetHandler application/x-httpd-php
Finally, check DirectoryIndex includes index.php
DirectoryIndex index.php index.html
The php.ini and php-fpm.ini file can be found in:
/opt/homebrew/etc/php/8.0/
php@8.0 is keg-only, which means it was not symlinked into /opt/homebrew,
because this is an alternate version of another formula.
If you need to have php@8.0 first in your PATH, run:
echo 'export PATH="/opt/homebrew/opt/php@8.0/bin:$PATH"' >> ~/.profile
echo 'export PATH="/opt/homebrew/opt/php@8.0/sbin:$PATH"' >> ~/.profile
For compilers to find php@8.0 you may need to set:
export LDFLAGS="-L/opt/homebrew/opt/php@8.0/lib"
export CPPFLAGS="-I/opt/homebrew/opt/php@8.0/include"
To start php@8.0 now and restart at login:
brew services start php@8.0
Or, if you don't want/need a background service you can just run:
/opt/homebrew/opt/php@8.0/sbin/php-fpm --nodaemonize
2-1:LoadModule文の追加
To enable PHP in Apache add the following to httpd.conf and restart Apache:
LoadModule php_module /opt/homebrew/opt/php@8.0/lib/httpd/modules/libphp.so
httpd.confにLoadModule文を追加せよと言っている。だがこの通り書いても、homebrewがインストールしたlibphp.soに対して署名がないのでロードできないと言われるのでコード署名証明書を作成、紐付けする。
ここのページを参照した。
2-2:httpd.confの修正
SetHandler application/x-httpd-php
上記をhttpd.confのどこかに書け、と。
場所はhttpd.confの中にFilesMatchの箇所がすでにあるので、そのブロックの下に追記した。
その他バーチャルホスト、SSLの設定用に下記も修正。
・SSIを有効(先頭の#を消す)
LoadModule include_module libexec/apache2/mod_include.so
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
・ユーザーディレクトリを有効化(これも先頭の#を消す)
LoadModule userdir_module libexec/apache2/mod_userdir.so
Include /private/etc/apache2/extra/httpd-userdir.conf
・バーチャルホストを有効化(#消し)
Include /private/etc/apache2/extra/httpd-vhosts.conf
・ServerNameが設定できてないというエラー?警告?が出るので下記も修正
#ServerName www.example.com:8080
ServerName localhost:8080 ← この行を追記
2-3:環境変数の追加
下記をターミナルでコピペ。入力してリターンしたら
source ~/.profile
しておく。
echo 'export PATH="/opt/homebrew/opt/php@8.0/bin:$PATH"' >> ~/.profile
echo 'export PATH="/opt/homebrew/opt/php@8.0/sbin:$PATH"' >> ~/.profile
ああ・・・これも同じ様にやったかな・・・あんまり覚えてねえわ(笑)
export LDFLAGS="-L/opt/homebrew/opt/php@8.0/lib"
export CPPFLAGS="-I/opt/homebrew/opt/php@8.0/include"
3:httpd-userdir.confを編集
sudo vi /private/etc/apache2/extra/httpd-userdir.conf
この行から#を消す。
Include /private/etc/apache2/users/*.conf
あとこれも必要らしいのでどこかに追記しておく。
UserDir enabled
4:ユーザーファイルの作成
(ユーザーフォルダ名)は環境によって違う。
sudo vi /private/etc/apache2/users/(ユーザーフォルダ名).conf
Options Indexes FollowSymLinks Multiviews
AllowOverride all
Require all granted
下記のように*で書いちゃうのが一番楽かな。
Options Indexes FollowSymLinks Multiviews
AllowOverride all
Require all granted
5:httpd-vhost.confを編集
sudo vi /private/etc/apache2/extra/httpd-vhosts.conf
下記設定を必要なだけ追加。ServerNameは後で使う。英語名だったらなんでもいいはず。
Listen 8080
DocumentRoot "/Users/(ユーザーフォルダ名)/Sites"
ServerName (任意のサーバー名)
Require all granted
DirectoryIndex index.html
Options Includes
AddType text/html .html
AddOutputFilter INCLUDES .html
Listen 8081
DocumentRoot "/Users/(ユーザーフォルダ名)/Sites/(新しく作ったフォルダ名)"
ServerName (任意のサーバー名)
Require all granted
DirectoryIndex index.html
Options Includes
AddType text/html .html
AddOutputFilter INCLUDES .html
6:hostsファイルを編集
sudo vi /etc/hosts
下記を追加。任意の名前は「5」で設定したServerNameを記載。
127.0.0.1 (任意のサーバー名)
7:アパッチの再起動
ここまでで設定は全部完了。
httpd -t
でテストしてSyntaxOKだったらsudo apachectl restart
でアパッチの再起動。
http://(任意のサーバー名):8080/
でhttpd-vhost.confで設定した上のやつ、
http://(任意のサーバー名):8081/
でhttpd-vhost.confで設定した下のやつが見える。はず。
パーミッションがどうこうってい言われるときはSitesとかその上のユーザーフォルダのパーミッションを確認したらいいかと。
chmod 755 フォルダ名
2023/06/22