JSON API プラグインを使用して友人の最近の投稿の JSON フィードを取得する、友人のワードプレス サイト用の API を作成しました。何ヶ月も問題なく動作していましたが、数日前、彼女の共有ホストが PHP 5.3 に切り替えられたとき、完全に動作しなくなりました (もちろん、彼らはユーザーに警告しませんでした.なぜ警告する必要があるのでしょうか?)
調べてみると、JSON 文字列を受け取り、デコードされた JSON オブジェクトを別の関数に返すコードの部分に奇妙なエラーが見つかりました。以前は、コード (動作したことを誓います!) は次のように動作していました。
$json_string = file_get_contents($url_to_json_string);
return json_decode($json_string);
これにより NULL が返されるようになり、json_last_error が 4 (構文エラー) になりました。utf8_encoding: を確認しました。BOM の奇妙さをチェックしました (この投稿によると): 結構です。jsonlint.comとjson.parser.online.frで JSON 文字列を検証したところ、完全に有効でした。迷子の htmlentities も、さまようスラッシュもありません。JSON 文字列自体は問題なく、検証されているはずです。
次に、コードを次のように変更しました。
$json_string = file_get_contents($url_to_json_string);
$json_object = json_decode($json_string);
return $json_object;
そしてそれはうまくいきました。
なぜこれが起こったのか誰か知っていますか?