在Heroku上主持 Yii 1.14 PHP 5.6
当Yii :: app() - > user-> id有时会返回id但在其他时间返回空时出现陌生人错误。相同的页面加载会导致这种奇怪的行为。
我在名为AdminController.php的父类中检查了这一点
class AdminController extends CController
{
public $partnerCount;
public $vendorCount;
public $plantationMarkers;
public function init()
{
echo Yii::app()->user->id;
if(empty(Yii::app()->user->id)) {
echo 'User id empty: '. Yii::app()->user->id;
//$this->redirect(Yii::app()->createAbsoluteUrl('admin/auth/login'));
exit;
return false;
}
elseif(!Yii::app()->user->checkAccess(User::PARTNER)) {
$this->layout = 'column1';
$this->render('/auth/not-authorized');
return false;
}
$this->partnerCount = $this->getPartnerCount();
$this->vendorCount = $this->getVendorCount();
$this->plantationMarkers = $this->getPlantationMarkers();
return true;
}
所以在这段代码中'用户ID为空:'在某些情况下被回显,而在其他情况下,我得到了id。
关键在于代码没有变化,如何在某些时候工作,而不是在其他时间。
答案 0 :(得分:0)
通过更改要存储在DB表中的会话来解决。我不确定但是在Heroku下的服务器上存在Yii存储会话的问题。 在'组件'。
下的配置数组中需要进行更改来自:
'session' => array(
'class' => 'CHttpSession',
'timeout' => 2400,
'cookieParams' => array(
'httpOnly' => true,
'secure' => false,
),
),
致:
'session' => array(
'timeout' => 2400,
'cookieParams' => array(
'httpOnly' => true,
'secure' => false,
),
'class' => 'CDbHttpSession',
'connectionID' => 'db',
'sessionTableName' => 'lig_session',
),