私は、次のPHPの警告を見ていることにより、奇妙な問題を持っている:CakePHP 3 - コンテンツの長さのために警告が表示されますか?
Warning (512): Unable to emit headers. Headers sent in file=/vendor/cakephp/cakephp/src/Error/Debugger.php line=921 [CORE/src/Http/ResponseEmitter.php, line 48]
Code Context
Cake\Http\ResponseEmitter::emit() - CORE/src/Http/ResponseEmitter.php, line 48
Cake\Http\Server::emit() - CORE/src/Http/Server.php, line 105
[main] - ROOT/webroot/index.php, line 37
Warning (2): Cannot modify header information - headers already sent by (output started at /vendor/cakephp/cakephp/src/Error/Debugger.php:921) [CORE/src/Http/ResponseEmitter.php, line 148]
Code Context
header - [internal], line ??
Cake\Http\ResponseEmitter::emitStatusLine() - CORE/src/Http/ResponseEmitter.php, line 148
Cake\Http\ResponseEmitter::emit() - CORE/src/Http/ResponseEmitter.php, line 54
Cake\Http\Server::emit() - CORE/src/Http/Server.php, line 105
[main] - ROOT/webroot/index.php, line 37
Warning (2): Cannot modify header information - headers already sent by (output started at /vendor/cakephp/cakephp/src/Error/Debugger.php:921) [CORE/src/Http/ResponseEmitter.php, line 181]
Code Context
header - [internal], line ??
Cake\Http\ResponseEmitter::emitHeaders() - CORE/src/Http/ResponseEmitter.php, line 181
Cake\Http\ResponseEmitter::emit() - CORE/src/Http/ResponseEmitter.php, line 55
Cake\Http\Server::emit() - CORE/src/Http/Server.php, line 105
[main] - ROOT/webroot/index.php, line 37
私は開発モード(app/config.php
で'DEBUG', true
)にいますよ。私がそれをfalse
に設定すると、警告が消えます。
エラーは、このコントローラのメソッドから発信されています。私は理解していない何
public function ajaxSubstances()
{
$this->autoRender = false;
$SubstanceModel = new SubstanceModel;
$data = ['data' => $SubstanceModel->getSubstances()];
debug($data);
}
は私$data
配列のみが含まれている場合は、20個の要素が言うことで、警告は表示されません。私が徐々に要素を追加するにつれて、一定数のレコード(約30以上の要素)があると、警告が常に表示されます。
ソースデータ(getSubstances()
)でないことを確認するには、$data
の配列をハードコードしましたが、同じことが起こります。
このメソッドはajaxレスポンスとして使用され、DataTableに渡されます。残念ながら、警告が出力された場合、有効な応答ではないため、DataTablesにエラーが表示されます。
debug
をfalse
に切り替えることはできません。これは残りの開発のために必要なものです。とにかくこれが起こっているのはなぜですか?
は、私はヘッダータイプは、コード内の任意の場所に変更されていないため、「ヘッダを発する」しようとしている理由はわからない - それはdebug()
を使用して、すべてを出力しています、と私はまた、var_dump()
しようとしたが、出力はまだ同じtext/html
ですコンテンツタイプ。
感謝を参照してください。私が出力する必要があったデータはJSONフィードでなければなりませんでした。私はhttps://book.cakephp.org/3.0/en/views/json-and-xml-views.htmlに記載されているようにJSONビューを設定しました。これは役に立ちましたようです - コンテンツタイプヘッダーは適切に設定されています何の問題もなくデータを出力するか、それではこれまでのように思われます! – Andy