phpbrewでPHP 8.1をインストール
はじめに
自分の場合はローカルPCでphpbrewを利用してPHPをインストールしています。
昨年PHP 8.1がリリースされたので、phpbrewでPHP 8.1をインストールします。
※phpbrew github.com
手順
たぶん以下の手順でいけるかと。
- phpbrew self-update
- phpbrew known --update
- phpbrew install 8.1.3 +default +dbs +curl +zlib
- phpbrew switch 8.1.3
すでにphpbrewをインストール済みの場合は、
最初にphpbrew self-update
してからphpbrew known --update
しないと8.1系が出てこないかもです。
また、PCにデフォルトでインストールされているopensslのバージョンが古い場合は、
opensslの最新バージョンをインストールしたうえで、
phpbrew installのオプションに +openssl=/usr/local/Cellar/openssl@x.x/x.xx
などして、
opensslのパスを指定する必要になると思います。
以下のようなかんじで、無事にローカル環境をphp 8.1.3に切り替えました。
$ phpbrew switch php-8.1.3
$ php -v
PHP 8.1.3 (cli) (built: Mar 9 2022 23:04:47) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.3, Copyright (c) Zend Technologies
PHP 8.1に切り替えて発生するようになったエラーなど
個人的によく使っているCodeigniterはPHP 8.1に対応しているので問題なかったが、
他のライブラリでは以下のようなエラーが出るようになりました。
1. During inheritance of Countable: Uncaught ErrorException:
Fatal error: During inheritance of Countable: Uncaught ErrorException: Return type of class::method() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /path/to/****.php:xxxx
これについては下記の記事が分かりやすかったので参考にしました。
2. strtolower(): Passing null to parameter #1 ($string) of type string is deprecated
某ライブラリが発せられている警告なのですが、、 せめて null
チェックはしていて欲しかった。
組み込み関数のnullableでない引数にnullを渡すと、PHP 8.1から警告が出るようになります。
www.php.net
メンテされていないライブラリを使用しているからなのですが、
これを機に古いライブラリの入れ替えもしようかなと。