PHP
Debuggen
Suche…
Variablen ausgeben
Mit der Funktion var_dump
können Sie den Inhalt einer Variablen (Typ und Wert) für das Debugging var_dump
.
Beispiel:
$array = [3.7, "string", 10, ["hello" => "world"], false, new DateTime()];
var_dump($array);
Ausgabe:
array(6) {
[0]=>
float(3.7)
[1]=>
string(6) "string"
[2]=>
int(10)
[3]=>
array(1) {
["hello"]=>
string(5) "world"
}
[4]=>
bool(false)
[5]=>
object(DateTime)#1 (3) {
["date"]=>
string(26) "2016-07-24 13:51:07.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Berlin"
}
}
Fehler anzeigen
Wenn Sie möchten, dass PHP Laufzeitfehler auf der Seite display_errors
, müssen Sie display_errors
entweder in der php.ini
oder mit der Funktion ini_set
.
Sie können auswählen, welche Fehler angezeigt werden sollen, mit der Funktion error_reporting
(oder in der ini), die E_*
error_reporting
akzeptiert, die mit bitweisen Operatoren kombiniert werden.
Je nach Einstellung von html_errors
kann PHP Fehler im Text- oder HTML-Format html_errors
.
Beispiel:
ini_set("display_errors", true);
ini_set("html_errors", false); // Display errors in plain text
error_reporting(E_ALL & ~E_USER_NOTICE); // Display everything except E_USER_NOTICE
trigger_error("Pointless error"); // E_USER_NOTICE
echo $nonexistentVariable; // E_NOTICE
nonexistentFunction(); // E_ERROR
Nur-Text-Ausgabe: (HTML-Format unterscheidet sich zwischen Implementierungen)
Notice: Undefined variable: nonexistentVariable in /path/to/file.php on line 7
Fatal error: Uncaught Error: Call to undefined function nonexistentFunction() in /path/to/file.php:8
Stack trace:
#0 {main}
thrown in /path/to/file.php on line 8
ANMERKUNG: Wenn die Fehlerberichterstattung in php.ini deaktiviert ist und zur Laufzeit aktiviert wird, werden einige Fehler (z. B. Analysefehler) nicht angezeigt, da sie vor der Anwendung der Laufzeiteinstellung aufgetreten sind.
Mit error_reporting
können Sie error_reporting
die vollständige Verwendung von E_ALL
während der Entwicklung E_ALL
und die Anzeige mit display_errors
in der Produktionsphase deaktivieren, um das Innere der Skripts auszublenden.
phpinfo ()
Warnung
phpinfo
nur in einer Entwicklungsumgebung verwendet werden. phpinfo
niemals Code mit phpinfo
in einer Produktionsumgebung frei
Einführung
Es kann jedoch hilfreich sein, um die PHP-Umgebung (Betriebssystem, Konfiguration, Versionen, Pfade, Module), in der Sie arbeiten, zu verstehen, insbesondere wenn Sie einen Fehler suchen. Es ist eine einfache eingebaute Funktion:
phpinfo();
Es hat einen Parameter $what
, wodurch die Ausgabe angepasst werden kann. Der Standardwert ist INFO_ALL
, wodurch alle Informationen angezeigt werden. INFO_ALL
Informationen werden üblicherweise während der Entwicklung verwendet, um den aktuellen Status von PHP anzuzeigen.
Sie können den Parameter INFO_*
Konstanten zusammen mit bitweisen Operatoren übergeben, um eine benutzerdefinierte Liste INFO_*
.
Sie können es im Browser ausführen, um ein schön formatiertes Detailbild zu erhalten. Es funktioniert auch in PHP-CLI, wo Sie es für eine einfachere Ansicht in less
überspielen können.
Beispiel
phpinfo(INFO_CONFIGURATION | INFO_ENVIRONMENT | INFO_VARIABLES);
Daraufhin wird eine Liste mit PHP-Direktiven ( ini_get
), Umgebung ( $_ENV
) und vordefinierten Variablen $_ENV
.
Xdebug
Xdebug ist eine PHP-Erweiterung, die Debugging- und Profilierungsfunktionen bietet.
Es verwendet das DBGp-Debugging-Protokoll.
Es gibt einige nette Funktionen in diesem Tool:
- Stack-Spuren bei Fehlern
- Maximaler Schachtelschutz und Zeitverfolgung
- hilfreicher Ersatz der Standardfunktion
var_dump()
zur Anzeige von Variablen - Ermöglicht das Protokollieren aller Funktionsaufrufe, einschließlich der Parameter, und gibt Werte in verschiedenen Formaten an eine Datei zurück
- Analyse der Codeabdeckung
- Profiling-Informationen
- Remote-Debugging (bietet eine Schnittstelle für Debugger-Clients, die mit ausgeführten PHP-Skripts interagieren)
Wie Sie sehen, ist diese Erweiterung perfekt für die Entwicklungsumgebung geeignet. Insbesondere die Remote-Debugging- Funktion kann Ihnen helfen, Ihren PHP-Code ohne zahlreiche var_dumps zu debuggen und einen normalen Debugging-Prozess wie in C++
oder Java
verwenden.
Die Installation dieser Erweiterung ist normalerweise sehr einfach:
pecl install xdebug # install from pecl/pear
Und aktiviere es in deiner php.ini:
zend_extension="/usr/local/php/modules/xdebug.so"
In komplizierteren Fällen siehe diese Anleitung
Wenn Sie dieses Tool verwenden, sollten Sie Folgendes beachten:
XDebug ist nicht für Produktionsumgebungen geeignet
phpversion ()
Einführung
Bei der Arbeit mit verschiedenen Bibliotheken und den damit verbundenen Anforderungen ist es häufig erforderlich, die Version des aktuellen PHP-Parsers oder eines seiner Pakete zu kennen.
Diese Funktion akzeptiert einen einzelnen optionalen Parameter in Form des Erweiterungsnamens: phpversion('extension')
. Wenn die betreffende Erweiterung installiert ist, gibt die Funktion eine Zeichenfolge mit dem Versionswert zurück. Wenn jedoch die Erweiterung nicht installiert ist, wird FALSE
zurückgegeben. Wenn der Erweiterungsname nicht angegeben wird, gibt die Funktion die Version des PHP-Parsers selbst zurück.
Beispiel
print "Current PHP version: " . phpversion();
// Current PHP version: 7.0.8
print "Current cURL version: " . phpversion( 'curl' );
// Current cURL version: 7.0.8
// or
// false, no printed output if package is missing
Fehlerberichterstattung (beide verwenden)
// this sets the configuration option for your environment
ini_set('display_errors', '1');
//-1 will allow all errors to be reported
error_reporting(-1);