5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

macOS MontereyでPHPとApache

Last updated at Posted at 2022-04-05

macOS MontereyではPHPが標準バンドルされなくなってしまいました。
なので、インストール...したところApacheも手入れしなければいけなかったのでメモ書き。

1.Homebrewのインストール

まっさらのOSの場合を想定してまずはHomebrewをインストール。
Homebrewのサイトでインストールするためのコマンドをコピーできます。

$/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

2.PHPをインストール

Homebrewのインストールが完了したら、引き続きPHPをインストールします。
入っていない筈ですが、一応PHPのバージョンチェックのコマンド。

$php -v

Command not foundが表示されると思います。
(もし自前で既にPHPを入れていた場合は現行のバージョンが表示されます)

インストールできるphpパッケージを確認します

$brew search php

いくつかPHPのバージョンが表示されるので、使いたいバージョンをインストール。
今回は8.0をインストールすることにします。

$brew install php@8.0

3.PHPのパスを通す

HomebrewでインストールしただけではPHPは使えず、パスを通してあげる必要があります。
今回は現行Macの標準になっているZshにパスを通します。

$echo 'export PATH="/usr/local/opt/php@8.0/bin:$PATH"' >> ~/.zshrc

これでターミナルを再起動するとパスが通ってPHPのコマンドが使える様になります。
早速インストールバージョンの確認。

$php -v
PHP 8.0.17 (cli) (built: Mar 18 2022 09:45:09) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.17, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.17, Copyright (c), by Zend Technologies

といった様に表示される筈です。

4.Apacheのインストール

引き続きHomebrewでApacheをインストールします。

$brew install httpd

インストールが完了したら、Mac標準のApacheを停止します。
基本的には勝手に起動していると思いますが、動いているか確認するには

$ps -ax | grep httpd

で確認。

  131 ??         0:07.12 /usr/sbin/httpd -D FOREGROUND
  627 ??         0:00.02 /usr/sbin/httpd -D FOREGROUND
25953 ??         0:00.01 /usr/sbin/httpd -D FOREGROUND
39787 ttys002    0:00.00 grep httpd

/usr/sbin/httpd -D FOREGROUNDのような表示があれば動いています。
ちなみにapachectlで停止使用とすると

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using MacBookPro.local. Set the 'ServerName' directive globally to suppress this message
httpd (no pid file) not running

というエラーが出て停止できません。
今回は

$sudo -s launchctl stop /System/Library/LaunchDaemons/org.apache.httpd.plist 
$sudo -s launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 

で停止させます。
ちなみに下はMacを起動したときに自動でApacheを起動させなくするコマンドです。
再度psコマンドで確認するとApacheが停止していると思います。

5. インストールしたApacheの起動

インストールと標準Apacheの停止が完了したらHomebrewでインストールしたApacheを起動します。

$brew services start httpd

psコマンドで起動していることを確認します。

6.Apacheの設定

これまでは/etc/apache2/httpd.cnfを編集してApacheの設定をしていましたが、Homebrewでインストールされた設定ファイルを編集します。
ファイルの場所は/usr/local/etc/httpd/httpd.cnfです。

以下の点を追加・修正します(バージョン等によって行は異なる可能性があります)

  • 52行付近 Listen 8080の下にListen 80を追加
  • 181行付近 行頭の#を削除してrewriteモジュールを有効にする
  • 181行付近 LoadModuleの記述が並ぶ最後に以下を追記
     LoadModule php_module /usr/local/opt/php@8.0/lib/httpd/modules/libphp.so
     <IfModule php_module>
     AddType application/x-httpd-php .php
     </IfModule>
  • 225行付近 行頭の#を削除して、www.exsample.com:8080をlocalhost:80に書き換える
  • 248行付近 必要に応じてDocumentRootを変更(今回は/Library/WebServer/Documentsに設定)
     またその直後にあるも同じディレクトリに書き換える
  • ファイル末尾に追記
    <IfModule php_module>
    PHPINIDir /usr/local/etc/php/8.0/
    </IfModule>
    ここまで記述したら保存してApacheを再起動する(ここはapachectlでOK)
$sudo -s apachectl restart

エラーなく起動し、所定のディレクトリに置いたphpinfo.phpをブラウザで確認できれば設定完了です

phpinfo.php
<?php
    phpinfo();
?>
5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?