PHP 7.4 の下位互換性のない変更のリストには、次の注記が含まれています。
シリアル化
o シリアライゼーション形式は削除されました。PHP によって生成されることはないため、手動で作成された文字列のシリアル化解除が中断される可能性があります。
(これは、オブジェクトのシリアル化に使用されるo
big- 形式ではなく、 little-を参照していることに注意してください。)O
これは PHP のserialize()
関数によって生成されたものではないようですが、このメモが存在するということは、関数によって認識されたことを意味しますunserialize()
。
私は小さなテスト フィドル (3v4l.org)を実行しました。これは、これが単純に big- の同義語ではないことを示しています。これはO
明らかな可能性の 1 つです。
フィドルは、出力されるエラー メッセージの違いによって、PHP の変更を公開します。PHP >= 7.4 では、位置 0 ( が検出o
された場所) でエラーが発生しますが、7.4 より前のバージョンでは、エラーは位置 5 (データが配置されている場所) で報告されていました。これo
は、認識されたが、データの形式が間違っていることを意味します。これは、上記で既に推測したことと関連しています。
o
では、シリアライゼーション形式とは何だったのでしょうか? デシリアライズしたのは何ですか? また、PHP 自体が実際に生成していないのに、なぜそのような機能をサポートしていたのでしょうか?