我已经将一个 Yii 应用程序移动到另一个共享主机。当应用程序使用登录凭据运行 ...index.php?r=site/login 时,我收到了警告:
session_regenerate_id(): Cannot regenerate session id - headers already sent
的actionLogin
代码:
public function actionLogin($name = null )
{
$model=new LoginForm;
if ($name) $model->username = $name;
if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
if(isset($_POST['LoginForm']))
{
$model->attributes=$_POST['LoginForm'];
// validate user input and redirect to the previous page if valid
if (headers_sent($filename, $linenum))
{
echo "Headers have been sent in {$filename} line number is {$linenum}\n"
exit;
}
if($model->validate() && $model->login())
$this->redirect(Yii::app()->user->returnUrl);
}
// display the login form
$this->render('login',array('model'=>$model));
}
文档和论坛都说 BOM 可能有问题。然而,在我的 Notepad++ 中,所有文件都保存为没有 BOM 的 UTF-8。
我应该对文件进行特殊检查吗?哪个?还是可能有其他错误原因?
我添加了headers_sent($filename, $linenum)
函数(参见上面的代码)来跟踪发送的标头,但没有结果。