質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.54%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

1回答

14399閲覧

cakephp3のheaderエラー

tarao

総合スコア28

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

1グッド

0クリップ

投稿2017/06/26 05:51

最近cakephp3.4.8をインストールして使い始めたところです。
formで送信すると

Cannot modify header information - headers already sent by

のエラーと

Unable to emit headers. Headers sent in file=/Applications/MAMP/htdocs/cake/vendor/cakephp/cakephp/src/Error/Debugger.php line=921 [CORE/src/Http/ResponseEmitter.php, line 48]

のエラーが表示されてしまいます。
viewではRegistsフォルダの中にindex.ctpを作り

html

1<div class="row"> 2 <form method="post" action="/cake/regists/regist"> 3 <input type="text" name="product"> 4 <button type="submit" id="btn">送信</button> 5 </form> 6</div>

RegistsController.phpは

php

1<?php 2namespace App\Controller; 3 4use Cake\Core\Configure; 5use Cake\Network\Exception\ForbiddenException; 6use Cake\Network\Exception\NotFoundException; 7use Cake\View\Exception\MissingTemplateException; 8use Cake\ORM\TableRegistry; 9use App\Controller\AppController; 10use Cake\I18n\Time; 11 12 13class RegistsController extends AppController{ 14 public $name="Regists"; 15 public $autoRender=true; 16 17 public function index(){ 18 }//index 19 20 21 public function regist(){ 22 $product=$this->request->data["product"]; 23 debug($product); 24 }//regist 25 26}//RegistsController 27?>

としていて、header関数も使っていないのですが、それとはまた違うエラーなのでしょうか?
debugを消すとエラーもなくなります。
このエラーをなくすにはどうしたら良いでしょうか?
よろしくお願いいたします。

yodel👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

1

ベストアンサー

debugを消すとエラーもなくなります。

はい、コントローラー段階でdebugを入れると、その時点でHTML出力が行われてしまうので、HTTPヘッダーの送信がうまく行かなくなってエラーとなります。

debugを使うのは一時的なものでしょうし、デバッグ時にエラーが出るのは気にしないのが正解でしょう。

投稿2017/06/26 06:01

maisumakun

総合スコア144986

yodel👍を押しています

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tarao

2017/06/26 06:14

ありがとうございます! cakephp3.0を使っていたのですが、その時はdebugをしてもこのようなエラーが表示されることがなかったので、何か設定が必要なのかと思ってしまいました。 気にしなくて大丈夫なのですね。 以前と同じようにajaxの記述をしてもエラーになるし、何か違うのかも!?と少し戸惑っています。 また、質問させていただくかもしれませんが、よろしくお願いいたします。
maisumakun

2017/06/26 06:16

CSRF関係か何かでヘッダーに出力があるのでエラーが出ているんだと思います(ヘッダーを送信しなければ、特にエラーとはならないです)。
tarao

2017/06/26 06:33

ありがとうございます!expose_php = offに変更すれば大丈夫でしょうか。
maisumakun

2017/06/26 06:36

それは特に関係ないです(CakePHP側で出力するヘッダの件なので、PHP自体が勝手に出すX-Powered-Byなどは別件です)。
tarao

2017/06/26 07:01

ありがとうございます! cakephp側の問題なのですね。 headerのことも全然理解せずなので、もう少し調べてみたいと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.54%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

同じタグがついた質問を見る

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。