Headers already sent [ 2.0 版本 ]
控制器当中echo或者var_dump获取到的数据的时候,数据没有全部输出,出现报错如下:
An Error occurred while handling another error:
yii\web\HeadersAlreadySentException: Headers already sent
此问题多处出现,请求大神指导
完整报错如下
An Error occurred while handling another error:
yii\web\HeadersAlreadySentException: Headers already sent in
D:\phpStudy\WWW\fccms\backend\controllers\TestController.php on line 40.
in D:\phpStudy\WWW\fccms\vendor\yiisoft\yii2\web\Response.php:366
Stack trace:
#0 D:\phpStudy\WWW\fccms\vendor\yiisoft\yii2\web\Response.php(339):
yii\web\Response->sendHeaders()
#1 D:\phpStudy\WWW\fccms\vendor\yiisoft\yii2\web\ErrorHandler.php(135):
yii\web\Response->send()
#2 D:\phpStudy\WWW\fccms\vendor\yiisoft\yii2\base\ErrorHandler.php(111):
yii\web\ErrorHandler->renderException(Object(yii\web\HeadersAlreadySentException))
#3 [internal function]:
yii\base\ErrorHandler->handleException(Object(yii\web\HeadersAlreadySentException))
#4 {main}
Previous exception:
yii\web\HeadersAlreadySentException:
Headers already sent in
D:\phpStudy\WWW\fccms\backend\controllers\TestController.php on line 40.
in D:\phpStudy\WWW\fccms\vendor\yiisoft\yii2\web\Response.php:366
Stack trace:
#0 D:\phpStudy\WWW\fccms\vendor\yiisoft\yii2\web\Response.php(339): yii\web\Response->sendHeaders()
#1 D:\phpStudy\WWW\fccms\vendor\yiisoft\yii2\base\Application.php(392): yii\web\Response->send()
#2 D:\phpStudy\WWW\fccms\backend\web\index.php(17): yii\base\Application->run()
#3 {main}
yiiartisan 补充于 2018-09-07 11:57
百度了一下,输出结尾添加exit()可以解决(到处添加exit()有点…………),另外有没有其他解决方法
最佳答案
-
是你更新了yii2的新版本导致的吧,我记得好像是yii2.0.14好像在send方法里增加了一个检测是否输出header的功能,如果已经发送header,那么就抛出异常。直接exit吧。
共 1 条回复yiiartisan 回复于 2018-10-31 16:46 回复yii\web\Response::send() 方法使用以下步骤来发送响应:
触发 yii\web\Response::EVENT_BEFORE_SEND 事件。 调用 yii\web\Response::prepare() 来格式化 response data 为 response content。 触发 yii\web\Response::EVENT_AFTER_PREPARE 事件。 调用 yii\web\Response::sendHeaders() 来发送注册的HTTP头 调用 yii\web\Response::sendContent() 来发送响应主体内容 触发 yii\web\Response::EVENT_AFTER_SEND 事件。
貌似如此,还是不太能理解,暂时先以exit()替代解决
其他 3 个回答
-
zongzong08 回答于 2021-04-28 12:11 举报
如果是打印测试,无所谓了;
如果是json接口,使用辅助类use yii\helpers\Json; 然后return
`return Json::encode(['status'=>1,'message'=>'操作成功']);
`现在的yii2在action操作使用return来返回
yiiartisan
注册时间:2017-12-22
最后登录:2023-06-27
在线时长:25小时19分
最后登录:2023-06-27
在线时长:25小时19分
- 粉丝1
- 金钱1210
- 威望0
- 积分1460