2021年10月25日リリースの「macOS(12.0.1) Monterey」にアップデートしたら、過去記事「macOS(11.0.1) Big SurでMAMP」に記載した『標準で入っているApacheとPHP、HomeBrewでインストールしたMySQLのMAMP環境』が使えなくなっていました。
「Mojave」→「Catalina」、「Catalina」→「Big Sur」のアップデート時に同じようなことを経験しているので、Apacheの設定ファイルを元の設定に戻せば簡単にMAMP環境を再構築出来るだろうと思っていたら、そんなに簡単なことではありませんでした。今回のMAMP再構築を行う中で、『Montereyから「PHP」が標準でバンドルされ無くなった』ことと『標準でバンドルされているApacheでは、HomeBrewでインストールしたPHPが使用できない』ことが判り、最終的には、標準で入っているApache(以下[標準]Apace)の使用を止めて、HomeBrewでApache(以下 [HomeBrew]Apache2.4)とPHP(以下 [HomeBrew]PHP7.4)をインストールしてMAMP環境を再構築しました。
[標準]Apache、PHPとMySQLのバージョン確認
Montereyにアップデートした後のApacheとPHP、MySQLのバージョンを確認した所、以下のようになっていました。
-
Big SurのApacheのバージョンは「Apache/2.4.46」でしたが、Montereyでは「Apache/2.4.48」になっていました。
$ httpd -v Server version: Apache/2.4.48 (Unix) $
- Big Surでは「PHP 7.3.22」が使えていましたが、Montereyでは、標準のPHPが無くなってました(汗)。
$ php -v -bash: php: command not found $
そういえば、「Catalina」から「Big Sur」にアップデートした時に、以下のように警告されてましたっけ。そんなの覚えてなかった(反省)。
$ php -v WARNING: PHP is not recommended\nPHP is included in macOS for compatibility with legacy software.\nFuture versions of macOS will not include PHP. PHP 7.3.22-(to be removed in future macOS) (cli) (built: Oct 30 2020 00:19:11) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.22, Copyright (c) 1998-2018 Zend Technologies $
- HomeBrewでインストールしたMySqlのバージョンは「mysql 5.7.24」から「mysql 5.7.34」に変わっていました。
$ mysql --version mysql Ver 14.14 Distrib 5.7.34, for osx10.16 (x86_64) using EditLine wrapper $
[HomeBrew]PHP7.4のインストール
- HomeBrewのバージョンを確認したところ「Homebrew 3.1.8」でした。
$ brew -v Homebrew 3.1.8 $
- 以下のコマンドで、HomeBrewを最新状態にしました。
$ brew upgrade $
- アップグレード後のHomeBrewのバージョンは「Homebrew 3.3.1」でした。
$ brew -v Homebrew 3.3.1 $
- アップグレードしたHomeBrewでPHP7.4をインストールしましたが、以下のエラーが発生しました。
$ brew install php@7.4 : Error: python@3.9: the bottle needs the Apple Command Line Tools to be installed. You can install them, if desired, with: xcode-select --install : $
- インストール時の指示に従い「xcode-select –install」してからbrewのアップグレードをやり直して、php@7.4を再インストールしたところ、phpのインストールは無事に出来ましたが、phpコマンドのPATHが通っていませんでした。
$ xcode-select --install $ brew upgrade $ brew install php@7.4 $ brew list | grep php php@7.4
- インストール時の指示に従い、phpコマンドのPATHを「.bash_profile」に設定しました。({username}は、自分の環境のユーザーネームに置き換えてください。)
$ echo 'export PATH="/usr/local/opt/php@7.4/bin:$PATH"' >> /Users/{username}/.bash_profile $ echo 'export PATH="/usr/local/opt/php@7.4/sbin:$PATH"' >> /Users/{username}/.bash_profile $ php -v PHP 7.4.25 (cli) (built: Oct 23 2021 18:05:05) ( NTS )
- phpコマンドのPATHが通って、phpが使えるようになりました。
[標準]Apacheの再起動と[HomeBrew]PHP7.4の動作確認
- HomeBrewでPHP7.4がインストール出来たので、Montereyに標準バンドルされているApacheに過去記事「macOS(11.0.1) Big SurでMAMP」に記載したApacheの設定を行なってHomeBrewでインストールしたPHP7.4の動作確認したところ、以下のエラーが発生しました。
$ sudo apachectl -t [Sat Oct 30 07:01:28.975837 2021] [so:error] [pid 22475] AH06665: No code signing authority for module at /usr/local/opt/php@7.4/lib/httpd/modules/libphp7.so specified in LoadModule directive. httpd: Syntax error on line 190 of /private/etc/apache2/httpd.conf: Code signing absent - not loading module at: /usr/local/opt/php@7.4/lib/httpd/modules/libphp7.so $
- ※libphp7.so のロードに失敗し、その理由は署名されていないからということのようです。標準のApacheではHomeBrewでインストールしたPHPモジュールは使用出来ないようです。そんな訳で、[標準]Apace の使用を止めて、[HomeBrew]Apache2.4 と [HomeBrew]PHP7.4 をインストールしてMAMP環境を再構築することになりました。
[標準]Apacheの停止と自動起動の解除
- 以下のコマンドで、標準でインストールされているApacheを停止しました。
$ sudo launchctl stop /System/Library/LaunchDaemons/org.apache.httpd.plist $
- 以下のコマンドで、標準でインストールされているApache起動時の自動起動を解除しました。
$ sudo launchctl unload /System/Library/LaunchDaemons/org.apache.httpd.plist $
[HomeBrew]Apache2.4のインストールと起動設定
- homebrewでApache2.4をインストールしました。
$ brew install httpd : DocumentRoot is /usr/local/var/www. The default ports have been set in /usr/local/etc/httpd/httpd.conf to 8080 and in /usr/local/etc/httpd/extra/httpd-ssl.conf to 8443 so that httpd can run without sudo. To start httpd: brew services start httpd Or, if you don't want/need a background service you can just run: /usr/local/opt/httpd/bin/httpd -D FOREGROUND :
- HomebrewでインストールしたApacheは、ポート番号が「HTTP → 8080, HTTPS → 8443」で起動するようになっているので、エディタ(nano)で「httpd.conf」を修正して、ポート番号が「HTTP → 80, HTTPS → 443」で起動するように変更しました。
$ sudo nano /usr/local/etc/httpd/httpd.conf $
=> 「Listen 8080」を「Listen 80」に変更
$ sudo nano /usr/local/etc/httpd/extra/httpd-ssl.conf $
=> 「Listen 8080」を「Listen 80」に変更
- ServerNameを「localhost」に変更しました。
ServerName localhost
[HomeBrew]Apache2.4「httpd.conf」の修正
- エディタ(nano)で「httpd.conf」を修正しました、
$ sudo nano /usr/local/etc/httpd/httpd.conf $
- userdir、rewriteを使用することができるようにするために、以下の記述をコメントアウトしてモジュールを組み込みました。
LoadModule userdir_module lib/httpd/modules/mod_userdir.so LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
- PHP7.4と連携するために、以下の記述を追加してモジュールを組み込みました。
LoadModule php7_module /usr/local/opt/php@7.4/lib/httpd/modules/libphp7.so <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>
- DocumentRootを/Users/{username}/Sites/に変更し、AllowOverrideの設定をNoneからAllに変更しました。({username}は、自分の環境のユーザーネームに置き換えてください。)
#-# DocumentRoot "/usr/local/var/www" #-# <Directory "/usr/local/var/www"> DocumentRoot "/Users/{username}/Sites/" <Directory "/Users/{username}/Sites/"> #-# AllowOverride None AllowOverride All
- DirectoryIndexにindex.phpを追記しました。
# DirectoryIndex: sets the file that Apache will serve if a directory # is requested. # <IfModule dir_module> DirectoryIndex index.html index.php </IfModule>
- ユーザーディレクトリを有効化するために、以下の記述をコメントアウトして「extra/httpd-userdir.conf」の設定を読み込むようにしました。
# User home directories Include /usr/local/etc/httpd/extra/httpd-userdir.conf
[HomeBrew]Apache2.4「extra/httpd-userdir.conf」の修正
- 「extra/httpd-userdir.conf」の設定を修正しました。
$ sudo nano /usr/local/etc/httpd/extra/httpd-userdir.conf $
- UserDirを「Sites」に変更し、ユーザーディレクトリを有効にしました。
#-# UserDir public_html UserDir Sites #-#<Directory "/home/*/public_html"> #-# AllowOverride FileInfo AuthConfig Limit Indexes #-# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec #-# Require method GET POST OPTIONS #-#</Directory> <IfModule bonjour_module> RegisterUserSite customized-users </IfModule>
[HomeBrew]Apache2.4「/usr/local/etc/httpd/users/{username}.conf」の作成
- 「/usr/local/etc/httpd/users/」フォルダを新規に作成して、ユーザー設定ファイル「/usr/local/etc/httpd/users/{username}.conf」を作成しました。({username}は、自分の環境のユーザーネームに置き換えてください。)
$ sudo mkdir /usr/local/etc/httpd/users/ $ sudo nano /usr/local/etc/httpd/users/{username}.conf
- ユーザー設定ファイル「{username}.conf」の内容は下記のように記載しました。
DocumentRoot "/Users/{username}/Sites/" <Directory "/Users/{username}/Sites/"> AllowOverride All Options Indexes FollowSymLinks Multiviews Require all granted </Directory>
[HomeBrew]PHP7.4の「php.ini」設定
- whichコマンドで「php.ini」のある場所を確認したところ、「/usr/local/etc/php/7.4/」フォルダ下にあることが判りました。
$ which php /usr/local/opt/php@7.4/bin/php $ php -i | grep "Loaded Configuration File" Loaded Configuration File => /usr/local/etc/php/7.4/php.ini $
- エディタ(nano)で「php.ini」を編集しました。
$ sudo nano /usr/local/etc/php/7.4/php.ini $
- タイムゾーンを”Asia/Tokyo”に設定しました。
;-;date.timezone = date.timezone = "Asia/Tokyo"
- error_reportingの値を以下に変更して、将来的にサポートされなくなる関数が使用されている時の警告を表示させないようにしました。
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
- mysql.sockの場所を追記しました。
$ sudo nano /etc/php.ini
pdo_mysql.default_socket = /tmp/mysql.sock mysqli.default_socket = /tmp/mysql.sock
- ポストとアップロードのMAXサイズを変更しました。
;-; post_max_size = 8M post_max_size = 20M ;-; upload_max_filesize = 2M upload_max_filesize = 20M
[HomeBrew]Apache2.4の起動(自動起動)、再起動と停止
- 以下のコマンドで、[HomeBrew]Apache2.4を起動します。一度起動すると、自動起動に設定されるようです。
$ sudo brew services start httpd ==> Successfully started `httpd` (label: homebrew.mxcl.httpd) $
- 以下のコマンドで、[HomeBrew]Apache2.4を停止します。
$ sudo brew services stop httpd $
- 以下のコマンドで、[HomeBrew]Apache2.4の再起動します。
$ sudo brew services restart httpd $
かなり悪戦苦闘してしまいましたが、MontereyでMAMP環境を構築することができました。MySQLについては、以前よりHomebrewでインストールしたものを使用しているので、特に何もせずにそのまま使用できました。以前にインストールしたMySQLの設定などは、過去記事「macOS(10.15.1)CatalinaでMAMP 」を参照願います。
コメント