Mac Homebrew で PHP 7.2 から 7.3 にアップグレード

はじめに

MacでHomebrewを使ってPHPを7.2から7.3にアップデートしたので、そのログを残します。

MacOSのバージョンはMojave、Homebrewは2.1.2です。

目次
  1. PHP7.2を削除
  2. PHP7.3をインストール
  3. PHPのバージョン確認
  4. Apacheの設定変更

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の設定に誤りや不足がある可能性が高いです。