Ich würde gerne PHP-Code debuggen, aber ich denke, das Drucken eines Protokolls auf einen Bildschirm oder eine Datei ist für mich in Ordnung.
Wie soll ich ein Protokoll in PHP-Code drucken?
Das übliche print
/printf
scheint zur HTML-Ausgabe zu gehen, nicht zur Konsole.
Ich habe einen Apache-Server, der den PHP-Code ausführt.
printf
Frage würde sich dies viele upvotes ...Antworten:
Ein weniger bekannter Trick ist, dass mod_php stderr dem Apache-Protokoll zuordnet. Und dafür gibt es einen Stream, der
file_put_contents('php://stderr', print_r($foo, TRUE))
den Wert von gut$foo
in das Apache-Fehlerprotokoll einfügt.quelle
var_export($foo, true)
anstelle von zu verwenden,print_r($foo, true)
wenn Sieprint_r
nicht die Typinformationen erhalten, die Sie benötigen.könnte nützlich sein
quelle
Sie können error_log verwenden , um eine Fehlerprotokolldatei an Ihren Server zu senden (oder eine optionale andere Datei, wenn Sie möchten).
quelle
Wenn Sie unter Linux arbeiten:
oder
und dann in der Konsole
Dies zeigt kontinuierlich die letzte Zeile in der Datei an.
quelle
Sie müssen Ihre Einstellung ändern. Sie schreiben PHP, nicht was auch immer Sie gewohnt sind zu schreiben. Das Debuggen in PHP erfolgt nicht in einer Konsolenumgebung.
In PHP gibt es drei Kategorien von Debugging-Lösungen:
Lernen Sie, diese zu verwenden, anstatt zu versuchen, PHP dazu zu bringen, sich wie jede andere Sprache zu verhalten, die Sie gewohnt sind.
quelle
Debuggen Sie auf der Konsole? Es gibt verschiedene Optionen zum Debuggen von PHP. Die am häufigsten verwendete Funktion für das schnelle und fehlerhafte Debuggen ist var_dump .
Davon abgesehen und aus dem Weg, obwohl var_dump großartig ist und viele Leute alles damit machen, gibt es andere Tools und Techniken , die es ein bisschen aufpeppen können.
<pre> </pre>
Um das Debuggen auf einer Webseite zu erleichtern, wickeln Sie Tags um Ihre Dump-Anweisung, um eine korrekte Formatierung für Arrays und Objekte zu erhalten.Dh:
Stellen Sie zu guter Letzt sicher, dass beim Debuggen der Fehlerbehandlung Fehler angezeigt werden. Das Hinzufügen am oberen Rand Ihres Skripts kann erforderlich sein, wenn Sie dazu nicht auf die Serverkonfiguration zugreifen können.
Viel Glück!
quelle
Wenn Sie ein Framework wie Zend nicht integrieren möchten, können Sie die Methode trigger_error verwenden, um sich im PHP-Fehlerprotokoll anzumelden.
quelle
Einfach so ist trigger_error:
Sie können jedoch keine Arrays oder Objekte verwenden
quelle
Sie können auch in eine Datei wie diese schreiben:
Stellen Sie sicher, dass die richtigen Berechtigungen festgelegt sind, damit PHP auf die Datei zugreifen und in sie schreiben kann (
775
).quelle
Sie können das PHP Curl-Modul verwenden, um Anrufe an http://liveoutput.com/ zu tätigen . Dies funktioniert hervorragend in einer sicheren Unternehmensumgebung, in der bestimmte Einschränkungen in der php.ini vorhanden sind, die die Verwendung von einschränken
file_put_contents
.quelle
Dies ist ein großartiges Tool zum Debuggen und Protokollieren von PHP: PHP Debugger & Logger
Es funktioniert sofort mit nur 3 Codezeilen. Es kann Nachrichten zum Ajax-Debugging an die js-Konsole senden und den Fehlerbehandler ersetzen. Es gibt auch Informationen zu Variablen wie var_dump () und print_r () aus, jedoch in einem besser lesbaren Format. Sehr schönes Werkzeug!
quelle
Ich habe viele davon verwendet, aber da ich normalerweise beim Entwickeln debuggen muss und da ich auf localhost entwickle, habe ich die Ratschläge anderer befolgt und schreibe jetzt in die JavaScript-Debug-Konsole des Browsers (siehe http: //www.codeforest). net / debugging-php-in-browser-javascript-konsole ).
Das bedeutet, dass ich auf die Webseite schauen kann, die mein PHP in meinem Browser generiert, und F12 drücken kann, um Debug-Trace schnell ein- / auszublenden.
Da ich ständig nach Entwicklertools für Debugger, CSS-Layout usw. suche, ist es sinnvoll, dort mein PHP-Loggon zu betrachten.
Wenn uns jemand diesen Code beschließt, habe ich eine kleine Änderung vorgenommen. Nach dem
function debug($name, $var = null, $type = LOG) {
Ich fügte hinzu
$name = 'PHP: ' . $name;
Dies liegt daran, dass mein serverseitiges PHP HTML generiert, das JavaScript enthält, und ich finde es nützlich, zwischen der Ausgabe von PHP und JS zu unterscheiden.
(Hinweis: Ich aktualisiere dies derzeit, damit ich verschiedene Ausgabetypen ein- und ausschalten kann: über PHP, über JS und über den Datenbankzugriff.)
quelle
Ich benutze Cakephp, also benutze ich:
quelle
Sie können verwenden:
quelle
Sie können verwenden
oder wenn Sie diese Anweisung in einem Protokoll drucken möchten, können Sie sie verwenden
quelle