サーバーのPHPバージョンをPHP 7.4.1にアップグレードしたところ、次のエラーが発生しました。
Notice: Trying to access array offset on value of type bool in
public static function read($id)
{
$Row = MySQL::query("SELECT `Data` FROM `cb_sessions` WHERE `SessionID` = '$id'", TRUE);
# http://php.net/manual/en/function.session-start.php#120589
//check to see if $session_data is null before returning (CRITICAL)
if(is_null($Row['Data']))
{
$session_data = '';
}
else
{
$session_data = $Row['Data'];
}
return $session_data;
}
PHP 7.4の修正は何ですか?
MySQL::query()結果が見つからなかったときに何を返すかによって異なります。
結果が見つからない場合はfalseを返し、結果がある場合は最初の行を連想配列として返します
—
anjanesh
public static function query($sql, $returnRow = FALSE)。この場合、2番目のパラメーターはTRUEです。
したがって、最初に$ Rowがfalseかどうかを確認してから、他の値にアクセスしてみてください。
—
トライビー
正解ですが、少なくともLaravel 5.4-5.8のコレクションはPHP 7.4と互換性がなく、このエラーでクラッシュします。
—
Henk Poley
if($Row['Data'] == false || is_null($Row['Data']))それを修正しましたが、これが正しい修正かどうか疑問に思っています。