CMS構築を目的にPHPをベースとしたWordPress、CakePHPやPEARなどオープンソースを中心に解説しています

最近、まれに以下のようなPHPエラーに出くわします

Fatal error: Can't use method return value in write context in ... on line xxx

実際に該当する箇所のソースを確認してみると、どうやら関数「empty()」に原因があるようです。

if (!empty($command->getMessage())){
...

調べてみると、PHP 5.4以下では関数「empty()」や「isset()」は、引数には関数の戻り値ではなく変数を設定しなければいけないようです。

対策1:関数の戻り値に変数を割り当てる

PHP 5.4以下では、以下のように変数を割り当てることで、エラーを回避できます。

$message = $command->getMessage();
if (!empty($message)){
...

対策2:PHPのバージョンを5.5以上にする

この現象はPHP 5.4以下で発生するので、サーバ環境を5.5以上、5.6や7.xにアップグレードすることでエラーを回避できます。

最近このエラーを見かけるようになった理由として、
一部サーバ環境で5.6や7.xへのアップグレードが進む中、パッケージも環境が5.6以上などを奨励するように設計されています。
そんな中、やや古めの自社サーバやレンタルサーバの環境では5.4以下が残っているため、パッケージをインストールした際にPHPエラーが発生するようです。

このエントリーをはてなブックマークに追加

Monthly Archives

Search