最後に、メッセージが無意味であることに気付きました。アプリケーションは、データベースを使用して独自のセッション ハンドラーを実装しています。readメソッドでは、セッション データをデータベースから文字列として取得します。
class Sess implements SessionHandlerInterface
...
public function read($key)
{
$qKey = U_Data::quote($key);
$dt = U_Data::datetime();
$sql = <<<EOT
SELECT `sess_data` FROM `sess`
WHERE `sess_key` = $qKey
AND `sess_exp_ts` > $dt
ORDER BY `sess_exp_ts` DESC
LIMIT 1
EOT;
return U_Data::getOneVal($sql);
}
U_Data ::getOneValメソッドには、一致するデータがない場合に返される 2 番目のパラメーターがあります。デフォルトはnullで、PHP5 では問題なく動作しましたが、PHP7.1 ではエラーが発生します。代わりに空の文字列を返すように変更するだけで、問題は解決しました。
return U_Data::getOneVal($sql, '');
それで、それはあります。session_start が機能しないという警告が表示され、独自のセッション ハンドラを実装している場合は、readメソッドでコードをチェックして、常に string が返されることを確認してください。
(注: U_Data は、私自身のデータ ユーティリティ クラスです)
これにより、私が頭を悩ませていた時間を他の誰かが節約できることを願っています!