私はこの問題を 12 時間以上調査してきましたが、成功していません。
政府系クライアント向けに構築した大規模なカスタム CMS があります。ソフトウェアは PHP 5.3.3 で開発されました。最初のデプロイは PHP 5.2.2 で行われたため、いくつかの問題が発生しましたが、最終的にサーバーを PHP 5.3.8 にアップグレードしました。サーバーにデプロイされるバージョンを正確に制御することはほとんどできません。
ショーストッパーの問題が発生しました。最大 5 レベルの深さのネストされた配列を持つ大きなフォームを POST 経由で送信する AJAX リクエストがあります。これは数か月間うまく機能していましたが、突然、新しい PHP インストールを使用すると、$_POST 変数内のデータの部分的なデコードしか得られなくなりました。php://input を調べて、PHPがすべてのデータを受信していることを確認しました(データがブラウザからFirebug経由で送信されていることも確認しました)。
これは、デコードされた出力として受け取っているものです (var_dump を介して、簡潔にするために短くしました。これで良いアイデアが得られるはずです)。
Array
(
[db_required_fields] => Array
(
[awr_title] => Array
(
[en] => phil test eng
)
)
[subtitle_intro] => Array
(
[awr_subtitle] => Array
(
[en] =>
)
)
[products] => Array
(
[cp_recall] => Array
(
[1] => Array
(
[product_common_name] => Array
(
[en] =>
)
)
)
)
)
不足しているもの: [en] のそれぞれには、ピア [fr] 配列インデックス エントリが必要です。たとえば、[fr] phil test fr エントリが必要です。2 番目のアレイ レベルの他のいくつかのインデックス エントリが欠落しています。リクエスト データ自体はそれほど大きくなく、およそ 6 ~ 7Kb です。
私が行ったこと: - suhosin は、同様の問題の原因としてよく言及されていたため、無効にしました。- phpinfo(); を調べました。動作中のサーバーと現在動作中のサーバーの両方から、関連する違いを特定しようとしています。- 物事に影響を与える可能性のあるすべてのモジュールとオプションを調査しました (mbstring など)。
現在、php://input データ用の独自のパーサーを作成することを検討していますが、これには (潜在的に隠された) 危険が伴うようです。
提案やヒントはありますか?