[PHP]local.ERROR: compact(): Undefined variable:エラーについて

はじめに

チームで開発をしていた際に陥ったエラーです。
自分のローカル環境や開発サーバーではエラーにならないのにあるメンバーだけエラーで落ちるという事象が発生しました。その時のメモです。

発生事象

エラーの出るメンバーのログにはlocal.ERROR: compact(): Undefined variable:というエラーが出力されていました。
compactで存在しない変数を渡すとエラーになっているようだということ。
しかしPHPのリファレンスには「設定されていない全ての文字列は、単にスキップされます。」と書かれている。軽くググっても無視されるということ。

解決

何か他の原因があるのかと探っていたところ、参考になる記事を発見。
PHP7.3でMake compact function reports undefined passed variablesという提案があり採用された模様。
自身のローカル環境や開発サーバーのPHPのバージョンは7.1でした。
自分のローカルのPHPを7.3にあげて検証してみると見事に事象を再現。
解決に少し時間がかかりましたが存在しない場合はcompactに入れないよう処理を記述しfixしました。

以上です。

おすすめの記事