Signatur
Beschreibung
mysqli_debug() ermöglicht es, Debugging-Informationen für die MySQLi-Erweiterung zu steuern. Die Funktion nutzt die Fred Fish Debug-Bibliothek (DBUG), die in die MySQL-Clientbibliothek integriert ist. Über einen speziellen Steuerungs-String wird festgelegt, welche Debug-Informationen wohin ausgegeben werden.
Die Funktion ist nur dann vollständig nutzbar, wenn PHP und die MySQL-Clientbibliothek mit Debug-Unterstützung kompiliert wurden. In produktiven Umgebungen ist diese Unterstützung typischerweise nicht vorhanden, weshalb die Funktion dort meist keine Wirkung zeigt.
Der $options-String folgt der DBUG-Syntax: z. B. d:t:o,/tmp/mysqli_debug.log, um Trace-Informationen in eine Datei zu schreiben. Die Buchstaben stehen für verschiedene Debugging-Modi wie d (Debug-Ausgaben), t (Funktions-Traces) und o (Ausgabe in eine Datei).
Diese Funktion wird primär während der Entwicklung und Fehlersuche eingesetzt, wenn tiefliegende MySQLi-Probleme analysiert werden müssen, die mit normalen PHP-Fehlermeldungen nicht diagnostizierbar sind.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $options Pflicht | string | Ein DBUG-Steuerungs-String, der die Art und das Ziel der Debug-Ausgaben bestimmt. Beispielformat: d:t:o,/tmp/debug.log. Einzelne Optionen werden durch Doppelpunkte getrennt. |
Rückgabewert
true zurück.Beispiele
Debug-Ausgabe in eine Datei schreiben
<?php
// Debugging aktivieren und Trace in eine Datei schreiben
// (erfordert MySQL-Clientbibliothek mit Debug-Unterstützung)
mysqli_debug('d:t:o,/tmp/mysqli_debug.log');
$mysqli = new mysqli('localhost', 'benutzer', 'passwort', 'datenbank');
if ($mysqli->connect_error) {
die('Verbindungsfehler: ' . $mysqli->connect_error);
}
$result = $mysqli->query('SELECT 1 AS test');
$row = $result->fetch_assoc();
echo $row['test']; // 1
$mysqli->close();
// Die Datei /tmp/mysqli_debug.log enthält nun Debug-Informationen
Prüfen ob Debug-Unterstützung aktiv ist
<?php
// mysqli_debug gibt immer true zurück, hat aber nur Wirkung
// wenn die Bibliothek mit DBUG-Unterstützung kompiliert wurde
$ergebnis = mysqli_debug('d:t:o,/tmp/test_debug.log');
if ($ergebnis) {
echo 'mysqli_debug() wurde aufgerufen (Wirkung abhängig von Kompilierung).';
} else {
echo 'mysqli_debug() ist nicht verfügbar.';
}
// Wichtig · Fallstricke
Wichtig: mysqli_debug() hat nur dann eine tatsächliche Wirkung, wenn sowohl PHP als auch die zugrundeliegende MySQL-Clientbibliothek mit aktivierter DBUG-Unterstützung kompiliert wurden. In den meisten Standard- und Produktionsinstallationen ist dies nicht der Fall – die Funktion gibt dann zwar true zurück, erzeugt aber keinerlei Debug-Ausgaben.
Sicherheitshinweis: Debug-Logs können sensible Datenbankzugangsdaten, SQL-Abfragen und interne Verbindungsdaten enthalten. Debug-Log-Dateien sollten daher niemals in öffentlich zugänglichen Verzeichnissen abgelegt und nach der Analyse umgehend gelöscht werden. mysqli_debug() darf niemals in Produktionsumgebungen aktiv sein.
Die Funktion besitzt kein objektorientiertes Pendant in der mysqli-Klasse und ist ausschließlich als prozedurale Funktion verfügbar.