Wie debuggt man Php-Code?

Lesezeit: 6 Minuten

Benutzer-Avatar
Don Luna

Ich bin Neuling auf PHP. Hier ist meine Situation. Ich schreibe meinen Code in vim und lege ihn unter /var/www/ ab, dann kann ich ihn verwenden

lokaler Host/*.php

um meinen Code im Browser auszuführen.

Wenn mein Code einen Fehler hat. Es kommt einfach nichts raus.

Wie kann ich Mu-Code wie C++ oder Java debuggen?

Vielen Dank.

Bearbeitet:

Der Link, den einige Freunde bereitstellen, ist für mich nicht hilfreich. Ich bin unter Linux. Das ist für Win.

  • Die Verwendung der Suche ist nützlich: stackoverflow.com/questions/5243572/how-to-debug-php-code

    – Alex Netkachov

    19. April 2011 um 1:40 Uhr

  • mögliches Duplikat von Wie debuggen Sie PHP-Skripte?

    – tobyodavies

    19. April 2011 um 1:47 Uhr

  • das ist schon ein Duplikat lol

    – Spyro

    19. April 2011 um 1:47 Uhr

  • Dieser Link ist für mich nicht hilfreich. Ich bin unter Linux. Das ist für Win.

    – Don Lun

    19. April 2011 um 1:57 Uhr

  • @AlexNetkachov diese Frage wird gelöscht

    – Ocker

    12. Januar um 8:40 Uhr

Fügen Sie diese beiden Zeilen in den Code ein, um zu sehen, um welche Art von Fehler es sich handelt.

<?php 
       ini_set("display_errors",1);
       error_reporting(E_ALL);
        //code goes here
?>

Auf einem lokalen Host würde ich vorschlagen, Firefox oder Chrome zu verwenden und Firebug für Mozilla zu installieren, und Chrome erhält einen Standardwert. Stellen Sie sicher, dass Ihre Einstellungen auf einem lokalen Host mit dem Server übereinstimmen, auf den Sie hochladen, da dies zu Problemen beim Livegang führen kann.

Insbesondere die meisten Shared Hostings haben PHP im abgesicherten Modus und die Ausgabepufferung ist deaktiviert. Wenn Sie es also verwenden, verwenden Sie es, indem Sie es aufrufen, indem Sie ob_start(); usw., ansonsten sollten Sie keine Probleme haben, und das Debuggen zu lernen ist Teil des Spaßes, hilft Ihnen viel zu lernen 🙂

Was PHP-Fehler betrifft, bearbeiten Sie einfach Ihre php.ini-Datei erneut, Sie finden alle relevanten Informationen unter http://php.net

Viel Spaß beim Codieren

Benutzer-Avatar
kenorb

Für eine fortgeschrittenere Lösung können Sie verwenden XDebug Erweiterung für PHP.

Wenn XDebug geladen wird, sollte es Ihnen standardmäßig automatisch den Backtrace im Falle eines schwerwiegenden Fehlers anzeigen. Oder Sie verfolgen in die Datei (xdebug.auto_trace), um eine sehr große Rückverfolgung der gesamten Anfrage zu haben oder die Profilerstellung durchzuführen (xdebug.profiler_enable) oder andere Einstellungen. Wenn die Ablaufverfolgungsdatei zu groß ist, können Sie verwenden xdebug_start_trace() und xdebug_stop_trace() um die Teilspur zu löschen.

Installation

Verwendung von PECL:

pecl install xdebug

Unter Linux:

sudo apt-get install php5-xdebug

Auf dem Mac (mit Homebrew):

brew tap josegonzalez/php
brew search xdebug
php53-xdebug

Beispiel einer Minenkonfiguration:

[xdebug]

; Extensions
extension=xdebug.so
; zend_extension="/YOUR_PATH/php/extensions/no-debug-non-zts-20090626/xdebug.so"
; zend_extension="/Applications/MAMP/bin/php/php5.3.20/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so" ; MAMP

; Data
xdebug.show_exception_trace=1       ; bool: Show a stack trace whenever an exception is raised.
xdebug.collect_vars = 1             ; bool: Gather information about which variables are used in a certain scope.
xdebug.show_local_vars=1            ; int: Generate stack dumps in error situations.
xdebug.collect_assignments=1        ; bool: Controls whether Xdebug should add variable assignments to function traces.
xdebug.collect_params=4             ; int1-4: Collect the parameters passed to functions when a function call is recorded.
xdebug.collect_return=1             ; bool: Write the return value of function calls to the trace files.
xdebug.var_display_max_children=256 ; int: Amount of array children and object's properties are shown.
xdebug.var_display_max_data=1024    ; int: Max string length that is shown when variables are displayed.
xdebug.var_display_max_depth=3      ; int: How many nested levels of array/object elements are displayed.
xdebug.show_mem_delta=0             ; int: Show the difference in memory usage between function calls.

; Trace
xdebug.auto_trace=0                 ; bool: The tracing of function calls will be enabled just before the script is run.
xdebug.trace_output_dir="/var/log/xdebug" ; string: Directory where the tracing files will be written to.
xdebug.trace_output_name="%H%R-%s-%t"     ; string: Name of the file that is used to dump traces into.

; Profiler
xdebug.profiler_enable=0            ; bool: Profiler which creates files read by KCacheGrind.
xdebug.profiler_output_dir="/var/log/xdebug"  ; string: Directory where the profiler output will be written to.
xdebug.profiler_output_name="%H%R-%s-%t"      ; string: Name of the file that is used to dump traces into.
xdebug.profiler_append=0            ; bool: Files will not be overwritten when a new request would map to the same file.

; CLI
xdebug.cli_color=1                  ; bool: Color var_dumps and stack traces output when in CLI mode.

; Remote debugging
xdebug.remote_enable=off            ; bool: Try to contact a debug client which is listening on the host and port.
xdebug.remote_autostart=off         ; bool: Start a remote debugging session even GET/POST/COOKIE variable is not present.
xdebug.remote_handler=dbgp          ; select: php3/gdb/dbgp: The DBGp protocol is the only supported protocol.
xdebug.remote_host=localhost        ; string: Host/ip where the debug client is running.
xdebug.remote_port=9000             ; integer: The port to which Xdebug tries to connect on the remote host.
xdebug.remote_mode=req              ; select(req,jit): Selects when a debug connection is initiated.
xdebug.idekey="xdebug-cli"          ; string: IDE Key Xdebug which should pass on to the DBGp debugger handler.
xdebug.remote_log="/var/log/xdebug.log" ; string: Filename to a file to which all remote debugger communications are logged.

  • Soll ich wissen, wie man in Windows debuggt? Danke @kenorb

    – Juwel

    29. November 2018 um 6:11 Uhr

  • Sie können XDebug auch unter Windows installieren.

    – kenorb

    29. November 2018 um 11:29 Uhr

Sie können verwenden error_reporting() ganz oben in deinem Code…

error_reporting(E_ALL);

Sie werden auch wollen display_errors auf ein php.ini.

Beachten Sie, dass Sie die öffentlich zugängliche Fehlerberichterstattung in einer Produktionsumgebung deaktivieren sollten.

Obwohl ich persönlich var_dump gerade genug für mein PHP-Debugging finde, neigen einige Leute dazu, dafür Debugger wie xdebug zu verwenden.

Benutzer-Avatar
Nick Brunt

PHP erzeugt eine error_log Datei in ihrem Verzeichnis, wenn ein Problem auftritt, finden Sie dort Debug-Informationen.

Versuchen Sie es auch mit var_dump($someVarible). Dadurch erhalten Sie nützliche Informationen über den aktuellen Zustand einer Variablen – oft besser als echo.

Benutzer-Avatar
Ken H

Zusätzlich zu den Kommentaren zur Verwendung error_reporting(E_ALL); Oben in Ihrem Code verwende ich gerne das Dienstprogramm php cli. Ich habe keinen Webserver auf dem PC, den ich zum Schreiben und Debuggen von PHP und HTML verwende, daher ist ein nettes Feature des cli-Dienstprogramms der eingebaute Webserver. So installieren Sie die PHP-CLI:

sudo apt install php7.0-cli

Um den Webserver zu verwenden, wechseln Sie in das Verzeichnis, in dem sich Ihre HTML- und PHP-Dateien befinden, und führen Sie Folgendes aus:

php -S localhost:8080

Zeigen Sie dann mit Ihrem Browser auf die Dateien, die Sie testen … zum Beispiel:

http://localhost:8080/test.php 

Sie können auch das Dienstprogramm cli verwenden, um Ihren PHP-Code auszuführen, und es zeigt die Fehler nach Zeilennummer an (verwenden Sie einen Editor, der Zeilennummern anzeigt). Möglicherweise müssen Sie Code auskommentieren und anpassen, der davon abhängt, dass html ihn aufruft.

php test.php

1011910cookie-checkWie debuggt man Php-Code?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy