使用 CakePHP 的 AuthComponent 时出现一个奇怪的错误。据我所知,代码本身没有任何问题。它在我的开发机器和生产服务器上运行良好。但是,如果我在生产服务器上将 app/Core/config.php 中的“调试”级别从 2(开发)更改为 0(生产),则应用程序将失败,但错误日志中只有以下内容:
PHP 致命错误:在第 3 行的 /path/to/my/app/View/Elements/auth_status.ctp 中找不到类 'AuthComponent'
我已检查该文件是否存在于lib/Cake/Controller/Component/AuthComponent.php
. 我还实验性地添加/删除App::uses('AuthComponent', 'Controller/Component')
了 AppController 和我的个人控制器,但无济于事。这让我很困惑,我无法在我的开发机器上重现该错误。这似乎表明存在服务器问题,但我找不到解释,并且文档不清楚运行 AuthComponent 所需的先决条件。有什么想法可以解决吗?谢谢!
作为参考,这是我的 AppController:
class AppController extends Controller {
public $helpers = array('Recaptcha.Recaptcha');
public $components = array(
'Session',
'Auth' => array(
'loginAction' => array(
'controller' => 'users',
'action' => 'login'
),
'authenticate' => array(
'Form' => array(
'fields' => array('username' => 'email')
)
)
)
);
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow();
}
}
auth_status.ctp 的代码:
<div class="pull-right">
<?php if (AuthComponent::user('id')): ?>
<?php echo $this->Html->link("Welcome!", '/users/view/'.AuthComponent::user('id'));?>
|
<?php echo $this->Html->link('Logout', '/users/logout');?>
<?php else: ?>
<?php echo $this->Html->link('Login', '/users/login');?>
|
<?php echo $this->Html->link('Register', '/users/register');?>
<?php endif; ?>
</div>