我尝试在基于Yii 2框架的留言簿应用程序上提交评论。在我的PC上的localhost上一切正常,但在共享主机上,当我想在View中提交评论时,我得到了这个错误。
错误如下:
An error occurred while handling another error:
exception 'yii\web\HeadersAlreadySentException' with message 'Headers already sent in /home/mahdikas/public_html/guestbook/controllers/PostController.php on line 117.' in /home/mahdikas/public_html/guestbook/vendor/yiisoft/yii2/web/Response.php:366
Stack trace:
#0 /home/mahdikas/public_html/guestbook/vendor/yiisoft/yii2/web/Response.php(339): yii\web\Response->sendHeaders()
#1 /home/mahdikas/public_html/guestbook/vendor/yiisoft/yii2/web/ErrorHandler.php(135): yii\web\Response->send()
#2 /home/mahdikas/public_html/guestbook/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:
exception 'yii\web\HeadersAlreadySentException' with message 'Headers already sent in /home/mahdikas/public_html/guestbook/controllers/PostController.php on line 117.' in /home/mahdikas/public_html/guestbook/vendor/yiisoft/yii2/web/Response.php:366
Stack trace:
#0 /home/mahdikas/public_html/guestbook/vendor/yiisoft/yii2/web/Response.php(339): yii\web\Response->sendHeaders()
#1 /home/mahdikas/public_html/guestbook/vendor/yiisoft/yii2/base/Application.php(392): yii\web\Response->send()
#2 /home/mahdikas/public_html/guestbook/web/index.php(12): yii\base\Application->run()
#3 {main}
在postController中,我有以下代码:
public function actionAdd_comment()
{
//print_r($_POST);
$model = new \app\models\Comments;
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
$model->comment_date = date('Y-m-d H:i:s');
if ($model->save()) {
echo 'Thanks for your comment.';
} else {
echo 'Failed!';
}
}
}
错误中的第117行是:
echo 'Thanks for your comment.';
我怎样才能解决这个问题?
2条答案
按热度按时间oxiaedzo1#
从Yii 2.0.14开始,你不能在控制器中回显。必须返回一个响应:
您也可以在方法的末尾调用
exit
,以防止进一步的处理,或者如果无法避免回显,则使用ob_start()
和ob_get_clean()
Package 代码。或
7y4bm7vi2#
虽然我认为rob 006的解决方案是正确的,但我也遇到过控制器没有回音的情况,但我也得到了错误。在浏览了几个网站寻找解决方案后,我发现了一个替代方案。
您可以检查 php.ini 文件并确保 output buffer 已启用。如果没有,您可以通过在 php.ini 中添加以下行来启用它(如果它不存在):
并且只为脚本关闭它-脚本中的任何一个都不需要它的地方...
1.调用
ob_end_flush()
,或1.呼叫
ob_end_clean()