私はPHPアプリケーション(CodeIgniterを使用)にajaxファイルアップロードを実装しています。PHP警告でJSON応答が破棄されます
アップロードされたPOSTデータがhttp://andrewcurioso.com/2010/06/detecting-file-size-overflow-in-php/に基づいて大きい(> post_max_size)かどうかを検出し、適切なJSONエンコードエラー応答を送信しようとします。
しかし、出力に含まれている対応するPHP警告は、私のJSON応答を完全に破壊します!
<br />
<b>Warning</b>: POST Content-Length of 105906405 bytes exceeds the limit of 8388608 bytes in <b>Unknown</b> on line <b>0</b><br />
[{"error":"Posted data is too large. 105906405 bytes exceeds the maximum size of 8388608 bytes."}]
私はクライアント側で警告を解析してフィルタリングしたくないと思っています。それは醜いようです。 すべてのphp警告をグローバルに無効にするのは不適切です。
php関数のコンテキストで特定のPHP警告を無効にすることはできますか?それとも有効なjsonレスポンスの中にラップしますか?
とにかくプロダクション環境でエラーがオフになっているはずです... – lonesomeday
@lonesomeday私は同意しますが、指定された動作は「ユーザーにフィードバックしても大きすぎるファイルをアップロードしようとすると、プロダクションと開発/テスト環境私は「さようなら」のファンではないが、プロダクションモードでは機能する! ;) –
通常、0行目のエラーはスタートアップエラーです。.htaccessに 'php_flag display_startup_errors off'を追加すると、それを無効にする必要があります。 – xception