Aktueller Standort: Startseite> Neueste Artikel> Beschreibung der Systemberechtigungen, die bei Verwendung von MySQLI :: Debug erforderlich sind

Beschreibung der Systemberechtigungen, die bei Verwendung von MySQLI :: Debug erforderlich sind

M66 2025-06-01

MySQLI :: Debug () ist eine Debug -Funktion, die von der MySQLI -Erweiterung von PHP bereitgestellt wird und es Entwicklern ermöglicht, Debug -Informationen zu MySQLI -Verbindungen und -Operationen aufzunehmen. Diese Funktion ist sehr nützlich, wenn Datenbankverbindungsprobleme oder Leistungs Engpässe Fehler beheben. Die Verwendung hat jedoch Voraussetzungen, insbesondere in Bezug auf die Berechtigungen. Eine leichte Nachlässigkeit kann dazu führen, dass sie nicht in Kraft treten oder Sicherheitsrisiken verursachen.

1. Einführung in MySQLI :: Debug () Funktion

 mysqli::debug(string $debug_options): bool

Mit dieser Funktion können Sie Debugging -Optionen angeben, und das System schreibt die entsprechenden Protokolle an einen von der MySQL Client -Bibliothek unterstützten Ort (normalerweise eine Datei). Diese Funktion kann erst vor der Initialisierung des MySQLI -Objekts aufgerufen werden.

Beispiel:

 mysqli::debug("d:t:o,/tmp/client.trace");
$mysqli = new mysqli("localhost", "user", "password", "database");

Der obige Code schreibt das Debug -Protokoll in die Datei /tmp/client.trace .

2. Die Systemberechtigungen, die für die Verwendung von MySQLI :: Debug () erforderlich sind,

1. Dateisystem -Schreibberechtigungen

  • Anforderungen an die Pfadberechtigung: Der Pfad zum Schreiben in die Debug -Protokolldatei (z. B. /tmp/client.trace ) muss durch den PHP -Prozess geschrieben werden. Das heißt, Webservernutzer (z. B. www-data , Apache , Nginx usw.) müssen Schreibberechtigungen in diesen Ordner haben.

  • Vorgeschlagene Praktiken:

    • Der Protokollpfad sollte auf den Pfad gesetzt werden, in dem der Webdienst Benutzer Berechtigungen hat.

    • Vermeiden Sie die Verwendung von Root -Verzeichnissen oder empfindlichen Pfaden (z. B. / etc / , / root / );

    • Wenn Sie einen benutzerdefinierten Pfad verwenden, stellen Sie sicher, dass der Weg bereits existiert und beschreibbar ist.

 sudo chown www-data:www-data /tmp
sudo chmod 755 /tmp

2. Einschränkungen für Selinux oder Apparmor (falls zutreffend)

In Systemen mit aktivierter Selinux oder Apparmor können die Protokolldatei auch dann aufgrund von Richtlinienbeschränkungen nicht geschrieben werden.

  • Lösung:

    • Sehen Sie sich das Audit -Protokoll an (normalerweise /var/log/audit/audit.log );

    • Entspannen Sie die Beschränkungen vorübergehend oder konfigurieren Sie benutzerdefinierte Richtlinien, um Schreibvorgänge zu ermöglichen.

3.. Konfigurationsbezogene Berechtigungen in PHP -Konfiguration

  • Das Verhalten von MySQLI :: Debug () kann disable_functions unterliegen.

    • Wenn MySQLI :: Debugg in php.ini deaktiviert ist, kann es nicht verwendet werden.

    • Stellen Sie außerdem sicher, dass Open_Basedir das Schreiben von Protokollpfaden nicht einschränkt.

 ; php.ini Beispiel
disable_functions =
open_basedir = /var/www:/tmp

3.. Dinge zu beachten, wenn Sie MySQLI :: Debug () verwenden

1. kann erst vor der Verbindung aufgerufen werden

MySQLI :: Debug () zu nennen, muss vor neuem MySQLI () ausgeführt werden, sonst wird es ignoriert.

2. Leistungsauswirkungen

Das Einschalten des Debug -Protokolls führt zu einem bestimmten Leistungsaufwand. Es wird empfohlen, es nur während der Entwicklung oder Fehlerbehebung zu ermöglichen.

3.. Log -Leckrisiko

Das Debug -Protokoll kann sensible Informationen enthalten, z. B. Datenbankverbindungsdetails, Abfrageberichtungen usw. und sollten nicht öffentlichen Verzeichnissen ausgesetzt sein, um Sicherheitsrisiken zu vermeiden.

  • Es wird empfohlen, Zugriffsberechtigungen festzulegen:

 chmod 600 /tmp/client.trace

4. Log -Rotationsverwaltung

Wenn die Debugging -Zeit lang ist, kann die Protokolldatei sehr groß werden und sollte in Verbindung mit dem System -Protokollrotationsmechanismus (wie Lehbrotat) verwaltet werden.

4. Code Beispiel: Verwenden Sie MySQLI :: Debug () und stellen Sie sicher, dass die Berechtigungen korrekt sind

 <?php
$logPath = "/tmp/mysqli_debug.log";

// Überprüfen Sie, ob der Pfad beschreibbar ist
if (is_writable(dirname($logPath))) {
    mysqli::debug("d:t:o," . $logPath);
} else {
    error_log("Protokollverzeichnis kann nicht geschrieben werden: " . dirname($logPath));
}

// Eine Verbindung herstellen
$mysqli = new mysqli("localhost", "testuser", "testpass", "testdb");

if ($mysqli->connect_error) {
    die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}

// Abfrage Demo
$result = $mysqli->query("SELECT * FROM articles WHERE domain = 'm66.net'");

while ($row = $result->fetch_assoc()) {
    echo "Titel: " . $row["title"] . "<br>";
}

$mysqli->close();
?>

5. Zusammenfassung

Mysqli :: debug () ist ein leistungsstarkes Debugging -Tool, aber wenn Sie es verwenden, müssen Sie sicherstellen:

  • Der Schreibpfad ist zugänglich und die Berechtigungen sind korrekt.

  • Die PHP -Umgebung ermöglicht diese Funktion;

  • Protokolldateischutz ist vorhanden;

  • Schließen Sie es rechtzeitig nach Abschluss des Debuggens, um Sicherheit und Leistungsprobleme zu vermeiden.

MySQLI :: Debug () wird ein großartiges Werkzeug zum Auffinden von Datenbankproblemen sein.