2012-05-02 10 views
7

Ricevo l'errore di riferimento nel titolo da un file che non fa riferimento alla classe Debugger. Se importare manualmente Debugger, l'errore si presenta ancora. Il numero di riga a cui fa riferimento l'errore nell'ultimo} che termina la definizione della classe nel file. Nulla segue il} (non c'è?> Neanche). Il file in cui visualizzo l'errore non fa direttamente riferimento a Debugger per quanto posso dire (come in, non c'è un uso esplicito di Debugger).CakePHP "Errore irreversibile: debug di classe" non trovato "in un file che non fa riferimento al debugger

ecco l'analisi dello stack:

(!) 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 

ed ecco il contesto attorno alla riga 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 
+0

fa il componente classe di utilizzo Debugger? –

+0

no, ho trovato l'errore. Questa classe che ho mostrato ha implementato il metodo di inizializzazione. Ma è implementato come funzione di inizializzazione pubblica ($ controller). Questo è un errore E_STRICT. Il mio setup sta rilevando quegli errori. Questo errore sta causando la ricerca di Debugger. Non sono sicuro del motivo per cui non è in grado di caricarlo automaticamente, ma cambiare il metodo di inizializzazione della funzione pubblica (Controller $ controller) ha risolto il problema che stavo svolgendo. – gregghz

risposta

8

ho trovato l'errore.

Questa classe che ho mostrato ha implementato il metodo di inizializzazione. Ma è implementato come

public function initialize($controller) 

Questo è un errore E_STRICT dal momento che differisce dal metodo genitore tralasciando il tipo di suggerimento. Il mio setup sta rilevando errori E_STRICT. Questo errore sta causando la ricerca di Debugger. Io non sono sicuro perché non è in grado di caricare automaticamente, ma cambiando il metodo per

public function initialize(Controller $controller) 

Risolto il problema che stavo avendo.

+1

Ho anche scoperto che questo è successo perché PHP 5.4 include E_STRICT nel set E_ALL ora. Quindi devi esplicitamente * exclude8 E_STRICT se non vuoi vedere quegli errori. In php 5.3 dovevi specificamente * includere * E_STRICT se volevi vedere quegli errori. – gregghz

0

Ciò si verifica ogni volta che si verifica un errore E_STRICT. Il principale che avevo era quando eseguivo PHP 5.4, è necessario avere dichiarazioni di funzioni pubbliche, private e protette.

13

Ciò è dovuto a un PHP bug che non ha eseguito il caricamento automatico per errori di tempo di compilazione (ad es., E_STRICT).

Questo è stato risolto in PHP 5.4.21 e un workaround pull request è stato accettato da CakePHP.

Per risolvere manualmente questo problema e senza E_STRICT dal gestore degli errori di CakePHP:

  1. aperto core.php nel vostro editor preferito (si può trovare il file eseguendo qualcosa come find . -name core.php).
  2. Trova la seguente riga: 'level' => E_ALL & ~E_DEPRECATED,
  3. sostituirlo con: 'level' => E_ALL & ~E_DEPRECATED & ~E_STRICT,
+0

stesso in php 5.5.30 – giuseppe

0

Il problema è che PHP inferiore alla versione 5.4.21 ha un problema con il caricatore automatico in caso di errori E_STRICT. (E_STRICT è un errore di tempo di compilazione)

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

ho incontrato lo stesso problema esatta su alcuni vecchi progetti, ed è fissato in 2.7.4.

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

Quindi la vera soluzione è quella di aggiornare almeno 5.4.21 o aspettare CakePHP 2.7.4

+1

stesso problema con php 5.5.A volte la radice del problema è altrove. – giuseppe

+0

Immagino che lo stesso problema fosse attivo anche in php 5.5 –

Problemi correlati