我一直在使用Yii幾個月,但它很棒,但是我在控制器中實現訪問規則時遇到問題,但很奇怪,只有在Production中。Yii - 訪問規則問題
首先,在組件裏我聲明瞭一個UserApplications類,其中我會去查看用戶是否有權限去某個頁面。這個類中
一種方法是例如:
class UserApplications extends CApplicationComponent{
public function userEmail($id){
$included = ApplicationUser::model()->find('id_app=:id_app AND id_user=:id_user', array('id_app' => 5, 'id_util' => $id));
if (isset($included)){
return TRUE;
}else{
return FALSE;
}
}
}
這樣一來,我看到,如果用戶可以訪問電子郵件應用程序。如果記錄存在,則返回TRUE,否則返回FALSE。
然後在我的config-> main.php我:
'components'=>array(
'user_apps'=>array('class'=>'UserApplications'),
最後,在我的電子郵件控制器,我有這樣的:
public function accessRules()
{
return array(
array('allow',
'actions'=>array('index', 'logout'),
'users'=>array('@'),
'expression'=>'Yii::app()->user_apps->userEmail('.Yii::app()->user->getId().')==TRUE',
),
array('deny',
'users'=>array('*'),
'deniedCallback' => function() {
$this->redirect(array('/site/index'));
},
),
);
}
這個工作在發展。我點擊鏈接,如果我不被允許進入應用程序,我會被重定向到網站的索引。
但是,在生產中,我得到的只是一個HTTP 500內部服務器錯誤。它沒有幫助,使
defined('YII_DEBUG') or define('YII_DEBUG',true);
在index.php文件,因爲我仍然得到500錯誤的錯誤消息在所有。
就像我說的,在開發中,一切都很好。
任何想法爲什麼會有這種情況?訪問規則內部是否依賴於特定的PHP函數,這些函數只能在確定的PHP本身及更高版本上運行?警予的要求,只能說5.1及以上,和我的部署服務器是5.2.17(老了,我知道,他們的工作就可以了)
問候