1

我在我的 CakePHP 应用程序中使用 Digest Auth 来保护某些操作。在我的带有 wamp 的 PC 上它可以工作,但是当我将它推送到服务器上时出现此错误:

致命错误

错误: 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;
}

有人对这个问题有想法吗?

感谢帮助。

4

1 回答 1

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 类

于 2015-10-05T10:21:16.347 回答