数年前にも記事を書いた 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
対応策
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 を上げておいた.