I'm getting the error referenced in the title from a file that doesn't reference the Debugger class. If I manually import Debugger, the error still shows up. The line number referenced in the error in the last } ending the class definition in the file. Nothing follows the } (there's not ?> either). The file that I'm getting the error in doesn't directly reference Debugger so far as I can tell (as in, there is no explicit use of Debugger).
here's the stack trace:
( ! ) 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
and here's the context around line 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
This is due to a a PHP bug that did not perform auto loading for compile time errors (e.g., E_STRICT
).
This was fixed in PHP 5.4.21 and a workaround pull request was accepted by CakePHP.
To manually workaround this issue and exempt E_STRICT
from CakePHP's error handler:
core.php
in your preferred editor (you could find the file by performing something like find . -name core.php
).'level' => E_ALL & ~E_DEPRECATED,
'level' => E_ALL & ~E_DEPRECATED & ~E_STRICT,
I found the error.
This class that I've shown has the initialize method implemented. But it's implemented as
public function initialize($controller)
This is an E_STRICT error since it differs from the parent method by leaving out the type hint. My setup is catching E_STRICT errors. This error is causing it to look for Debugger. I'm not sure why it's not able to autoload it, but changing the method to
public function initialize(Controller $controller)
fixed the issue I was having.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With