Mac Homebrew で PHP 7.2 から 7.3 にアップグレード
はじめに
MacでHomebrewを使ってPHPを7.2から7.3にアップデートしたので、そのログを残します。
MacOSのバージョンはMojave、Homebrewは2.1.2です。
1. PHP7.2を削除
1-1. インストール済のPHPのバージョン確認
$ php -v
PHP 7.2.18 (cli) (built: May 2 2019 13:03:01) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.18, Copyright (c) 1999-2018, by Zend Technologies
1-2. 上記PHPをHomebrewでインストールしたか確認
PHP7.2はHomebrewでインストールしたと記憶していたのですが、念のため下記コマンドで確認しました。
$ brew list | grep php
php@7.2
1-3. PHP7.2をアンインストール
$ brew uninstall --force php72
Uninstalling php@7.2... (514 files, 74.9MB)
1-4. アンインストールされたことを確認
$ brew list | grep php
(何も表示されない)
1-5. PHP7.2の設定ファイルが残っているか確認
下記コマンドの結果をみると「7.2」というディレクトリがあります。この中にPHP7.2の設定ファイルが入っています。
$ ls -la /usr/local/etc/php
total 0
drwxr-xr-x 3 taro admin 96 5 15 20:08 .
drwxrwxrwx 19 taro admin 608 6 19 21:34 ..
drwxr-xr-x 7 taro admin 224 7 25 21:26 7.2
1-6. 設定ファイルを削除
$ rm -rf /usr/local/etc/php/7.2/
1-7. 削除されたことを確認
$ ls /usr/local/etc/php
total 0
drwxr-xr-x 3 taro admin 96 8 17 09:20 .
drwxrwxrwx 19 taro admin 608 6 19 21:34 ..
2. PHP7.3をインストール
2-1. Homebrewでインストール可能なPHP7のバージョンを確認
$ brew search php@7
==> Formulae
php@7.1 php@7.2 php@7.3
2-2. HomebrewでPHP7.3をインストール
$ brew install php@7.3
Updating Homebrew...
~~~ (省略: 色々とインストール) ~~~~
==> php
To enable PHP in Apache add the following to httpd.conf and restart Apache:
LoadModule php7_module /usr/local/opt/php/lib/httpd/modules/libphp7.so
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
Finally, check DirectoryIndex includes index.php
DirectoryIndex index.php index.html
The php.ini and php-fpm.ini file can be found in:
/usr/local/etc/php/7.3/
To have launchd start php now and restart at login:
brew services start php
Or, if you don't want/need a background service you can just run:
php-fpm
3. PHPのバージョン確認
3-1. PHPのパスを確認
2-2の結果から/usr/local/opt/php/にPHPの各種ファイルがあることが推測されます。
念のため、下記コマンドでPHPのパスを確認しました。
$ ls -la /usr/local/opt/ | grep php
lrwxr-xr-x 1 taro admin 19 8 17 09:42 php -> ../Cellar/php/7.3.7
rwxr-xr-x 3 taro admin 96 4 20 2017 php56-mysql
lrwxr-xr-x 1 taro admin 19 8 17 09:42 php@7.3 -> ../Cellar/php/7.3.7
上記の実行結果から、/usr/local/opt/php/でも/usr/local/opt/php@7.3/でも大丈夫なことがわかります。
(双方とも /usr/local/Cellar/php/7.3.7 へのシンボリックリンク)
各種設定ファイルでは、今後バージョンを上げた際に変更不要になる可能性が高い前者を使います。
3-2. PHPのパスを通す
.bash_profileを確認したところ、PHP7.2へのパスが残っていたので、その部分をPHP7.3用のパスに書き換えました。
上記3-1の結果から/usr/local/opt/phpにしています。
$ vi ~/.bash_profile
export PATH="/usr/local/opt/php@7.2/bin:$PATH"
export PATH="/usr/local/opt/php@7.2/sbin:$PATH"
↓
export PATH="/usr/local/opt/php/bin:$PATH"
export PATH="/usr/local/opt/php/sbin:$PATH"
$ source ~/.bash_profile
3-3. バージョン確認
$ php -v
PHP 7.3.7 (cli) (built: Jul 5 2019 12:44:05) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.7, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.7, Copyright (c) 1999-2018, by Zend Technologies
4. Apacheの設定変更
4-1. Apacheのバージョン
$ brew info httpd
httpd: stable 2.4.39 (bottled)
Apache HTTP server
https://httpd.apache.org/
/usr/local/Cellar/httpd/2.4.39 (1,649 files, 27.0MB) *
~~~ (略) ~~~
4-2. Apacheの設定確認、変更
$ vi /usr/local/etc/httpd/httpd.conf
~~~ (略) ~~~
LoadModule php7_module /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
~~~ (略) ~~~
設定ファイルをみると、SetHandlerの部分はそのまま使えるものの、libphp7.soのパスはPHP7.2になっているので、PHP7.3のパスに書き換えました。
パスは3-1の結果から/user/local/opt/phpにしています。
LoadModule php7_module /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so
↓
LoadModule php7_module /usr/local/opt/php/lib/httpd/modules/libphp7.so
4-3. Apache起動、phpinfo()のスクリプトを作ってバージョン確認
下記コマンドでApache起動後、<?php phpinfo(); ?>のスクリプトファイルを作り、ApacheとPHP7.3が連携していることを確認して終了です。
$ apachectl start
ここで、画面に“<?php phpinfo(); ?>”とソースコードが表示される場合は、4-2のhttpd.confの設定に誤りや不足がある可能性が高いです。