PHP 5.6 環境では CacheTool v3.2.1 を使うべし

数年前にも記事を書いた PHP のキャッシュ管理ツール CacheTool を,今日 PHP 5.6 環境にインストールをして実行したら以下のエラーが出てしまった.調べたところ,5月末にリリースされた最新メジャーバージョン CacheTool v4 から PHP 7.x 系だけをサポートするらしく,PHP 5.6 だと CacheTool v3 を使う必要があった.

$ /usr/local/bin/cachetool.phar opcache:reset --fcgi=/var/run/php-fpm/php-fpm.sock
PHP Fatal error:  Default value for parameters with a class type hint can only be NULL in phar:///usr/local/bin/cachetool.phar/vendor/symfony/yaml/Parser.php on line 49

kakakakakku.hatenablog.com

対応策

PHP 5.6 環境の場合,CacheTool v3.2.1 を指定してインストールする必要がある.バイナリは以下の URL から取得できる.

PHP 5.6 と PHP 7.2 で比較してみた

PHP 5.6 で CacheTool v3.1.0 を指定したときもエラーが出てしまったけど,やはり「PHP 5.6 なら CacheTool v3.2.1」「PHP 7.x なら CacheTool v4.0.0」となる.

PHP 5.6

$ php -v
PHP 5.6.36 (cli) (built: Jun  6 2018 21:16:46)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

$ curl -sO http://gordalina.github.io/cachetool/downloads/cachetool-3.0.0.phar
$ chmod +x cachetool-3.0.0.phar
$ ./cachetool-3.0.0.phar list # ok

$ curl -sO http://gordalina.github.io/cachetool/downloads/cachetool-3.1.0.phar
$ chmod +x cachetool-3.1.0.phar
$ ./cachetool-3.1.0.phar list
Fatal error: Default value for parameters with a class type hint can only be NULL in phar:///cachetool-3.1.0.phar/vendor/symfony/console/Application.php on line 83

$ curl -sO http://gordalina.github.io/cachetool/downloads/cachetool-3.2.1.phar
$ chmod +x cachetool-3.2.1.phar
$ ./cachetool-3.2.1.phar list # ok

$ curl -sO http://gordalina.github.io/cachetool/downloads/cachetool-4.0.0.phar
$ chmod +x cachetool-4.0.0.phar
$ ./cachetool-4.0.0.phar list
Fatal error: Default value for parameters with a class type hint can only be NULL in phar:///cachetool-4.0.0.phar/vendor/symfony/yaml/Parser.php on line 49

PHP 7.2

$ php -v
PHP 7.2.6 (cli) (built: Jun  6 2018 18:55:25) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

$ curl -sO http://gordalina.github.io/cachetool/downloads/cachetool-3.0.0.phar
$ chmod +x cachetool-3.0.0.phar
$ ./cachetool-3.0.0.phar list # ok

$ curl -sO http://gordalina.github.io/cachetool/downloads/cachetool-3.1.0.phar
$ chmod +x cachetool-3.1.0.phar
$ ./cachetool-3.1.0.phar list # ok

$ curl -sO http://gordalina.github.io/cachetool/downloads/cachetool-3.2.1.phar
$ chmod +x cachetool-3.2.1.phar
$ ./cachetool-3.2.1.phar list # ok

$ curl -sO http://gordalina.github.io/cachetool/downloads/cachetool-4.0.0.phar
$ chmod +x cachetool-4.0.0.phar
$ ./cachetool-4.0.0.phar list # ok

ちなみに

CacheTool v3.1.0 から,バージョン表示が間違っていることに気付いたので,Issue を上げておいた.

github.com