7

我从一个不引用 Debugger 类的文件中得到标题中引用的错误。如果我手动导入调试器,错误仍然出现。最后一个}中错误引用的行号结束了文件中的类定义。} 后面没有任何内容(也没有 ?>)。据我所知,我收到错误的文件并没有直接引用 Debugger(例如,没有明确使用 Debugger)。

这是堆栈跟踪:

( ! ) Fatal error: Class 'Debugger' not found in /home/gregg/workspace/Fueled/dapprly/backend/app/Plugin/Facebook/Controller/Component/FapiComponent.php on line 107
Call Stack
#   Time    Memory  Function    Location
1   0.0003  245664  {main}( )   ../index.php:0
2   0.0168  1657712 Dispatcher->dispatch( ) ../index.php:100
3   0.0237  2753568 Dispatcher->_invoke( )  ../Dispatcher.php:85
4   0.0237  2753768 Controller->constructClasses( ) ../Dispatcher.php:99
5   0.0237  2755712 ComponentCollection->init( )    ../Controller.php:638
6   0.0255  3057112 ComponentCollection->load( )    ../ComponentCollection.php:52
7   0.0255  3057600 class_exists ( )    ../ComponentCollection.php:99
8   0.0255  3057896 App::load( )    ../ComponentCollection.php:0
9   0.0257  3091416 ErrorHandler::handleError( )    ../ComponentCollection.php:551

这是第 107 行的上下文:

class FapiComponent extends Component {
    // -- snip -- //

    public function method()
    {
        $url = urlencode('http://url');

        $param = array(
        'access_token' => '##' ,
        'object' => 'user',
        'fields' => 'feed', 
        'callback_url' => $url);
        $id = $this->facebook->getAppId();
        $subs = $this->facebook->api('/' . $id . '/subscriptions' , 'POST' , $param);
    }
} // <-- line 107 ... nothing after this
4

4 回答 4

13

这是由于一个PHP 错误没有对编译时错误执行自动加载(例如,E_STRICT)。

这已在PHP 5.4.21中修复,并且CakePHP 接受了一个解决方法拉取请求。

要手动解决此问题并免除E_STRICTCakePHP 的错误处理程序:

  1. 在您喜欢的编辑器中打开core.php(您可以通过执行类似的操作找到该文件find . -name core.php)。
  2. 找到以下行:'level' => E_ALL & ~E_DEPRECATED,
  3. 将其替换为:'level' => E_ALL & ~E_DEPRECATED & ~E_STRICT,
于 2013-02-18T23:16:13.150 回答
8

我发现了错误。

我展示的这个类实现了初始化方法。但它被实施为

public function initialize($controller)

这是一个 E_STRICT 错误,因为它与父方法的不同之处在于省略了类型提示。我的设置正在捕获 E_STRICT 错误。此错误导致它寻找调试器。我不确定为什么它无法自动加载它,但将方法更改为

public function initialize(Controller $controller)

解决了我遇到的问题。

于 2012-05-02T14:17:14.713 回答
0

每当您有 E_STRICT 错误时,都会发生这种情况。我的主要问题是在运行 PHP 5.4 时,您需要拥有public、private 和 protected 函数声明

于 2012-10-15T22:52:25.873 回答
0

问题是低于版本 5.4.21 的 php 在 E_STRICT 错误上的自动加载器存在问题。(E_STRICT 是编译时错误)

https://bugs.php.net/bug.php?id=65322

我在一些旧项目上遇到了完全相同的问题,它已在 2.7.4 中修复。

https://github.com/cakephp/cakephp/issues/7376

所以真正的解决方案是至少升级到 5.4.21 或者等待 CakePHP 2.7.4

于 2015-09-11T13:47:46.907 回答