Ist es möglich, einen String zu schreiben oder sich in die Konsole einzuloggen?
Was ich meine
Genau wie in JSP wird etwas, das wir drucken system.out.println("some")
, an der Konsole und nicht auf einer Seite angezeigt.
Feuerfuchs
In Firefox können Sie eine Erweiterung namens FirePHP verwenden , die das Protokollieren und Speichern von Informationen aus Ihren PHP-Anwendungen auf der Konsole ermöglicht. Dies ist ein Addon zur fantastischen Webentwicklungserweiterung Firebug .
Chrom
Wenn Sie jedoch Chrome verwenden, gibt es ein PHP-Debugging-Tool namens Chrome Logger oder webug (webug hat Probleme mit der Reihenfolge der Protokolle).
In jüngerer Zeit befindet sich Clockwork in der aktiven Entwicklung, die die Entwicklertools um ein neues Bedienfeld erweitert, das nützliche Informationen zum Debuggen und Profilieren bietet. Es bietet sofort Unterstützung für Laravel 4 und Slim 2 und kann über die erweiterbare API hinzugefügt werden.
Verwenden von Xdebug
Ein besserer Weg, um Ihr PHP zu debuggen, wäre über Xdebug . Die meisten Browser bieten Hilfserweiterungen, mit denen Sie die erforderliche Cookie- / Abfragezeichenfolge übergeben können, um den Debugging-Prozess zu initialisieren.
Oder Sie verwenden den Trick von PHP Debug zur Konsole .
Zuerst benötigen Sie eine kleine PHP-Hilfsfunktion
Dann können Sie es so verwenden:
Dadurch wird eine Ausgabe wie folgt erstellt:
quelle
"Debug Objects: " . $data . ""
$data
in der Ausgabe angezeigt wird, haben Sie die Funktion nicht genau wie gezeigt eingegeben. Sehen Sie sich Ihre einfachen und doppelten Anführungszeichen genau an, um sicherzustellen, dass sie mit dem obigen Code übereinstimmen.$data
ist eine PHP-Variable; Wenn die Seite an den Browser gesendet wird, ist diese PHP-Variable durch den an übergebenen Parameter ersetzt wordendebug_to_console
. Der Browser sollte niemals sehen$data
. (Wenn Siepage source
im Browser schauen , sollte es nicht sagen$data
.)Wenn Sie nach einem einfachen Ansatz suchen, geben Sie als JSON wieder:
quelle
function debug_log( $object=null, $label=null ){ $message = json_encode($object, JSON_PRETTY_PRINT); $label = "Debug" . ($label ? " ($label): " : ': '); echo "<script>console.log(\"$label\", $message);</script>"; }
Standardmäßig wird die gesamte Ausgabe an
stdout
die HTTP-Antwort oder die Konsole gesendet, je nachdem, ob Ihr Skript von Apache oder manuell in der Befehlszeile ausgeführt wird. Sie können es jedocherror_log
für die Protokollierung verwenden und verschiedene E / A-Streams können mit geschrieben werdenfwrite
.quelle
error_log
das musste ich vom integrierten PHP-WebserverVersuche Folgendes. Es funktioniert:
quelle
Erstellt eine
mit dem
damit das div nicht angezeigt wird, sondern das
Funktion wird in Javascript erstellt. So erhalten Sie die Nachricht in der Konsole.
quelle
div
. Wenn Sie nur einen<script>
Block haben, wird im Browser nichts angezeigt.json.encode
damit Anführungszeichen Ihre Codezeile nicht beschädigen. Zum Beispiel:echo "<script>console.log(".json_encode($msg).")</script>";
Als Autor der verlinkten Webseite in der beliebten Antwort möchte ich meine letzte Version dieser einfachen Hilfsfunktion hinzufügen. Es ist viel fester.
Ich
json_encode()
überprüfe, ob der Variablentyp nicht erforderlich ist, und füge einen Puffer hinzu, um Probleme mit Frameworks zu lösen. Es gibt keine solide Rendite oder übermäßige Nutzung vonheader()
.Verwendungszweck
Screenshot des Ergebnisses
Auch ein einfaches Beispiel als Bild, um es viel einfacher zu verstehen:
quelle
Ich denke, es kann verwendet werden -
quelle
Einige großartige Antworten, die mehr Tiefe hinzufügen; aber ich brauchte etwas einfacheres und ähnlicheres wie den JavaScript-
console.log()
Befehl.Ich benutze PHP in vielen "Daten sammeln und in XML verwandeln" in Ajax-Anwendungen. Das JavaScript
console.log
funktioniert in diesem Fall nicht. es bricht die XML-Ausgabe.Xdebug usw. hatte ähnliche Probleme.
Meine Lösung in Windows:
.txt
Datei ein, die leicht zugänglich und beschreibbar isterror_log
Variable in der.ini
Datei so ein, dass in diese Datei geschrieben wirderror_log('myTest');
PHP-Befehl, um Nachrichten zu sendenDiese Lösung ist einfach und erfüllt die meiste Zeit meine Anforderungen. Standard-PHP und das Vorschaufenster werden bei jedem Schreiben von PHP automatisch aktualisiert.
quelle
json_encode
auch das Problem lösen? In diesem Fall können Anführungszeichen in der Nachricht die Anführungszeichen im Skript beeinträchtigen. (zum Beispiel :)echo "<script>console.log(".json_encode($msg).")</script>";
. Wenn nicht, bin ich gespannt, welches Problem das Skript console.log verursacht hat und wie / warum Ihre Lösung das behoben hat. Ihre Lösung ist gut - ich versuche nur, mehr über die Bedingungen zu erfahren, die dazu geführt haben, dass dieconsole.log
XML-Ausgabe unterbrochen wurde. In vielen Fällen ist ein Fehlerprotokoll wie Sie viel besser als ein schnellesconsole.log
.PHP- und JavaScript-Interaktion.
quelle
Ich finde das hilfreich:
Und benutze es wie:
Welche Ausgänge in der Konsole:
Und Sie können weniger wichtige Protokolle ausschalten, indem Sie sie mit dem Wert $ debug einschränken.
quelle
console('Even Less Important' ,6 , $debug);
dies nicht in der Konsole angezeigt? warum so? wird etwas über 5 nicht angezeigt$output = '<script>console.log("' . str_repeat(" ", $priority-1)
und. '");</script>';
. Nurimplode(",", $data)
und$data
ist anders.Kurz und einfach, für Arrays, Strings oder auch Objekte.
quelle
quelle
Wenn Sie in die PHP-Protokolldatei und nicht in die JavaScript-Konsole schreiben möchten, können Sie Folgendes verwenden:
error_log("This is logged only to the PHP log")
Referenz: error_log
quelle
Für Chrome gibt es eine Erweiterung namens Chrome Logger , mit der PHP-Nachrichten protokolliert werden können.
Die Firefox DevTools unterstützen sogar das Chrome Logger-Protokoll .
Um die Protokollierung zu aktivieren, müssen Sie nur die Datei 'ChromePhp.php' in Ihrem Projekt speichern . Dann kann es so verwendet werden:
Beispiel von der GitHub-Seite .
Die Ausgabe kann dann folgendermaßen aussehen:
quelle
"ccampbell/chromephp": "*"
Es gibt auch eine großartige Google Chrome-Erweiterung, PHP Console , mit einer PHP-Bibliothek , mit der Sie:
error file:line
in Ihrem Texteditor zu.quelle
Ich suchte nach einer Möglichkeit, Code in einem von mir entwickelten WordPress-Plugin zu debuggen, und stieß auf diesen Beitrag.
Ich habe die Code-Teile, die für mich am besten geeignet sind, aus anderen Antworten genommen und diese zu einer Funktion kombiniert, die ich zum Debuggen von WordPress verwenden kann. Die Funktion ist:
Die Verwendung ist wie folgt:
Wenn diese Funktion bei der WordPress-Entwicklung verwendet wird, sollte die Funktion in der
functions.php
Datei des untergeordneten Themas platziert werden und kann dann an einer beliebigen Stelle im Code aufgerufen werden.quelle
Ich habe all das zugunsten von Debugger & Logger aufgegeben . Ich kann es nicht genug loben!
Klicken Sie einfach auf eine der Registerkarten oben rechts oder auf "Hier klicken", um sie zu erweitern / auszublenden.
Beachten Sie die verschiedenen "Kategorien". Sie können auf ein beliebiges Array klicken, um es zu erweitern / zu reduzieren.
Von der Webseite
quelle
Ab 2017 wurde Firebug und damit FirePHP deaktiviert .
Ich habe einige kleine Änderungen am ChromePHP-Tool vorgenommen, um eine nahtlose Migration von FirePHP zu Firebug zum Debuggen über die Konsole zu ermöglichen.
Dieser Artikel erklärt in einfachen Schritten
Migrieren Sie in 5 Minuten von FirePHP zu ChromePHP (ohne vorhandenen Code zu beschädigen).
quelle
Bei Ajax-Aufrufen oder XML / JSON-Antworten, bei denen Sie sich nicht mit dem Text herumschlagen möchten, müssen Sie Protokolle über HTTP-Header senden und diese dann mit einer Web-Erweiterung zur Konsole hinzufügen. So machen es FirePHP (nicht mehr verfügbar) und QuantumPHP (eine Gabelung von ChromePHP) in Firefox.
Wenn Sie die Geduld haben, ist x-debug eine bessere Option - Sie erhalten einen tieferen Einblick in PHP, können Ihr Skript anhalten, sehen, was gerade passiert, und dann das Skript fortsetzen.
quelle
Ich könnte zu spät zu einer Party kommen, aber ich suchte nach einer Implementierung der Protokollierungsfunktion, die:
console.log()
,console.log()
.Die Ausgabe sieht also so aus:
(Das folgende Snippet wurde auf PHP getestet
7.2.11
. Ich bin mir nicht sicher, ob es auf PHP abwärtskompatibel ist. Es kann auch ein Problem für Javascript sein (in einem Begriff alter Browser), da es nachconsole.log()
Argumenten ein nachfolgendes Komma erzeugt - was nicht der Fall ist legal bisES 2017
.)quelle
Alle diese beiden funktionieren:
quelle
Verwenden:
quelle
Hier ist eine praktische Funktion. Es ist sehr einfach zu bedienen, ermöglicht es Ihnen, beliebig viele Argumente eines beliebigen Typs zu übergeben und zeigt den Objektinhalt im Browser-Konsolenfenster so an, als hätten Sie console.log über JavaScript aufgerufen - aber über PHP
Beachten Sie, dass Sie Tags auch verwenden können, indem Sie 'TAG-YourTag' übergeben. Diese werden angewendet, bis ein anderes Tag gelesen wird, z. B. 'TAG-YourNextTag'.
HINWEIS : func_num_args () und func_num_args () sind PHP-Funktionen zum Lesen einer dynamischen Anzahl von Eingabeargumenten und ermöglichen es dieser Funktion, unendlich viele console.log-Anforderungen von einem Funktionsaufruf zu erhalten.
quelle
Hier ist meine Lösung. Das Gute an dieser ist, dass Sie so viele Parameter übergeben können, wie Sie möchten.
Nennen Sie es so
Jetzt sollten Sie in der Lage sein, die Ausgabe in Ihrer Konsole zu sehen, fröhliche Codierung :)
quelle
Obwohl dies eine alte Frage ist, habe ich danach gesucht. Hier ist meine Zusammenstellung einiger hier beantworteter Lösungen und einiger anderer Ideen, die an anderer Stelle gefunden wurden, um eine Einheitslösung zu erhalten.
CODE:
TESTS & NUTZUNG:
Die Verwendung ist einfach. Fügen Sie die erste Funktion zum manuellen Posten auf der Konsole hinzu. Verwenden Sie die zweite Funktion, um die Behandlung von PHP-Ausnahmen umzuleiten. Der folgende Test sollte eine Idee geben.
ERKLÄRUNG:
Die Funktion verwendet einen
console($data, $is_error, $file, $fn)
String oder ein Array als erstes Argument und stellt es mithilfe von js-Einfügungen auf der Konsole bereit.Das zweite Argument ist ein Flag, um normale Protokolle von Fehlern zu unterscheiden. Bei Fehlern fügen wir Ereignis-Listener hinzu, um uns durch Warnungen zu informieren, wenn Fehler ausgelöst wurden, und um sie auch in der Konsole hervorzuheben. Dieses Flag ist standardmäßig auf false gesetzt.
Das dritte und vierte Argument sind explizite Deklarationen von Datei- und Zeilennummern, was optional ist. Wenn sie nicht vorhanden sind, verwenden sie standardmäßig die vordefinierte PHP-Funktion
debug_backtrace()
, um sie für uns abzurufen.Die nächste Funktion
exceptions_to_console($svr, $str, $file, $ln)
hat vier Argumente in der Reihenfolge, die vom PHP-Standardausnahmehandler aufgerufen wird. Hier ist das erste Argument der Schweregrad, den wir mit vordefinierten Konstanten unter Verwendung der Funktion weiter überprüfenseverity_tag($code)
, um weitere Informationen zu Fehlern bereitzustellen.BEACHTEN :
Der obige Code verwendet JS-Funktionen und -Methoden, die in älteren Browsern nicht verfügbar sind. Aus Gründen der Kompatibilität mit älteren Versionen muss es ersetzt werden.
Der obige Code dient zum Testen von Umgebungen, in denen Sie allein Zugriff auf die Site haben. Verwenden Sie dies nicht in Live-Websites (Produktionswebsites).
VORSCHLÄGE :
Die erste Funktion hat
console()
einige Hinweise ausgegeben, daher habe ich sie in eine andere Funktion eingeschlossen und sie mit dem Fehlerkontrolloperator '@' aufgerufen. Dies kann vermieden werden, wenn Ihnen die Hinweise nichts ausmachen.Zu guter Letzt kann das Auftauchen von Warnungen beim Codieren ärgerlich sein. Dafür verwende ich diesen Piepton (in Lösung gefunden: https://stackoverflow.com/a/23395136/6060602 ) anstelle von Popup-Warnungen. Es ist ziemlich cool und die Möglichkeiten sind endlos. Sie können Ihre Lieblingsmusik spielen und das Codieren weniger stressig machen.
quelle