I have moved a Yii app to another shared host. As the app was running ...index.php?r=site/login with login credentials, I got the warning:
session_regenerate_id(): Cannot regenerate session id - headers already sent
the actionLogin
''s code:
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));
}
The docs and forums have said that there may be a problem with the BOM. Yet in my Notepad++ all files are saved as UTF-8 without BOM.
Should I do the special check of the files? Which ones? Or might there be another cause of the error?
I've added headers_sent($filename, $linenum)
function (see in the code above) to trace the sent headers but with no result.
use
ob_start()
at the start of the file.