CakePHP "Schwerwiegender Fehler: Klasse 'Debugger' nicht gefunden" in einer Datei, die nicht auf Debugger verweist

7

Ich erhalte den Fehler, auf den im Titel verwiesen wird, aus einer Datei, die nicht auf die Debugger-Klasse verweist. Wenn ich den Debugger manuell importiere, wird der Fehler immer noch angezeigt. Die Zeilennummer, auf die im letzten Fehler verwiesen wird}, die die Klassendefinition in der Datei beendet. Nichts folgt dem} (es gibt auch nicht? & Gt;). Die Datei, in der ich den Fehler erhalte, verweist nicht direkt auf Debugger, soweit ich das beurteilen kann (da es keine explizite Verwendung von Debugger gibt).

Hier ist der Stack-Trace:

%Vor%

und hier ist der Kontext um Zeile 107:

%Vor%     
gregghz 02.05.2012, 13:53
quelle

4 Antworten

8

Ich habe den Fehler gefunden.

Diese Klasse, die ich gezeigt habe, hat die Initialisierungsmethode implementiert. Aber es ist als

implementiert %Vor%

Dies ist ein E_STRICT-Fehler, da er sich von der übergeordneten Methode unterscheidet, indem der Typhinweis weggelassen wird. Mein Setup fängt E_STRICT Fehler ab. Dieser Fehler führt dazu, dass er nach Debugger sucht. Ich bin mir nicht sicher, warum es nicht automatisch geladen werden kann, sondern die Methode auf

umgestellt wird %Vor%

hat das Problem behoben, das ich hatte.

    
gregghz 02.05.2012, 14:17
quelle
13

Dies ist auf einen PHP-Fehler zurückzuführen, der das automatische Laden von Kompilierungsfehlern (z. B. , E_STRICT ).

Dies wurde in PHP 5.4.21 behoben und ein Abfrage mit Wortzugriff wurde von CakePHP akzeptiert.

Um dieses Problem manuell zu umgehen und E_STRICT vom Fehlerhandler von CakePHP zu befreien:

  1. Öffnen Sie core.php in Ihrem bevorzugten Editor (Sie könnten die Datei finden, indem Sie etwas wie find . -name core.php ausführen).
  2. Finde die folgende Zeile: 'level' => E_ALL & ~E_DEPRECATED,
  3. Ersetzen Sie es durch: 'level' => E_ALL & ~E_DEPRECATED & ~E_STRICT,
gounane 18.02.2013 23:16
quelle
0

Dies tritt jedes Mal auf, wenn Sie einen E_STRICT-Fehler haben. Das wichtigste, das ich hatte, war, wenn PHP 5.4 ausgeführt wurde, dass Sie public, private und protected function declarations haben müssen.

    
Steve Tauber 15.10.2012 22:52
quelle
0

Das Problem ist, dass php niedriger als Version 5.4.21 ein Problem mit dem Autoloader bei E_STRICT-Fehlern hat. (E_STRICT ist ein Kompilierzeitfehler)

Ссылка

Ich habe genau das gleiche Problem bei einigen alten Projekten festgestellt, und es ist in 2.7.4 behoben.

Ссылка

Also ist die wirkliche Lösung, auf mindestens 5.4.21 zu aktualisieren oder auf CakePHP 2.7.4 zu warten

    
Sander Visser 11.09.2015 13:47
quelle

Tags und Links