CakePHP 2.6.2 - BasicAuthenticate - 调用未定义的方法UnauthorizedException :: responseHeader()

时间:2015-06-03 10:32:31

标签: php cakephp cakephp-2.6

我在CakePHP应用程序中使用Digest Auth来保护某些操作。在我的电脑上使用wamp工作,但当我在服务器上推它时我有这个错误:

致命错误

错误: Call to undefined method UnauthorizedException::responseHeader()

文件: .../lib/Cake/Controller/Component/Auth/BasicAuthenticate.php

行: 104

/lib/Cake/Controller/Component/Auth/BasicAuthenticate.php:

public function unauthenticated(CakeRequest $request, CakeResponse $response) {
    $Exception = new UnauthorizedException();
    $Exception->responseHeader(array($this->loginHeaders())); //Line 104
    throw $Exception;
}

有人对这个问题有所了解吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

UnauthorizedException扩展了HttpException

HttpException有以下代码(cake 2.5.6)

if (!class_exists('HttpException', false)) {
    class HttpException extends CakeBaseException {
    }
}

如果已经定义了HttpException,那么它将不会扩展CakeBaseException,并且可能没有实现responseHeader函数

检查你的php扩展和供应商库是否有HttpException

我用过:

$reflector = new ReflectionClass('HttpException');        
var_dump($reflector->getFileName()); //if its defined in a php file
var_dump($reflector->getExtensionName()); //if its defined in a php extension

找出我安装了php-http扩展,我不需要它并且它已经定义了HttpException类