Bei der Verwendung von PHP -Erweiterung von PHP für Datenbankdebugging kann die MySQLI :: Debug -Funktion Debug -Informationen in die angegebene Protokolldatei schreiben, die es den Entwicklern ermöglicht, Probleme zu beheben. Viele Entwickler begegnen jedoch auf das Problem, dass Protokolldateien bei Verwendung von MySQLI :: Debug nicht geschrieben werden können. In diesem Artikel wird die Ursachen dieses Problems im Detail analysiert und wirksame Methoden zur Lösung des Berechtigungsproblems bereitstellen.
MySQLI :: Debugg ist ein Debugging -Tool, das von der MySQLI -Erweiterung bereitgestellt wird, mit der MySQL -Debugging -Informationen in Protokolldateien schreiben können. Die Anrufmethode ist normalerweise:
mysqli::debug("d:t:o:/path/to/logfile.log");
Unter ihnen lautet das Parameterformat D: T: O: <Log -Dateipfad> , mit dem der Debug -Modus und den Log -Ausgangsposition angegeben werden.
Wenn mysqli :: debug ("d: t: o: /var/log/mysqli_debug.log"); Die Protokolldatei ist jedoch nicht geschrieben. Der Hauptgrund ist in der Regel Erlaubnisprobleme, einschließlich:
Unzureichende Dateiberechtigungen : Die vom PHP-Prozess verwendeten Benutzer (z. B. www-data, Apache usw.) haben keine Schreibberechtigungen für Protokolldateien oder Verzeichnisse.
Verzeichnis existiert nicht oder mangelnde Berechtigungen : Das angegebene Verzeichnis der Protokolldatei gibt es nicht, oder die Verzeichnisberechtigungen beschränken die Erstellung und das Schreiben von Dateien.
Selinux- oder Sicherheitsmodulbeschränkungen : In Systemen mit Sicherheitsmodulen (wie Selinux, Apparmor) können der PHP -Zugriff auf bestimmte Verzeichnisse eingeschränkt werden.
Pfadfehler : Der Pfad der Protokolldatei wird falsch geschrieben oder von der falschen geschrieben, was dazu führt, dass der richtige Speicherort der Protokolldatei nicht gefunden werden kann.
Hier ist ein Linux -Server als Beispiel zur Einführung der Lösung:
Angenommen, der Pfad der Protokolldatei ist /var/log/mysqli_debug.log :
ls -l /var/log/mysqli_debug.log
ls -ld /var/log/
Bestätigen Sie, dass die Datei /var/log/mysqli_debug.log -Datei vorhanden ist und beschreibbare Berechtigungen hat, oder bestätigen Sie, dass das Verzeichnis/var/log/log/ zum Erstellen von Dateien verfügbar ist.
Die Benutzeridentität des PHP-Prozesses ist normalerweise www-data , apache oder nginx , was über PS Aux | bestätigt werden kann Grep Php .
Wenn die Protokolldatei nicht vorhanden ist, können Sie sie zuerst manuell erstellen:
sudo touch /var/log/mysqli_debug.log
sudo chown www-data:www-data /var/log/mysqli_debug.log
sudo chmod 664 /var/log/mysqli_debug.log
Wenn Sie möchten, dass der PHP -Prozess Protokolldateien im Verzeichnis erstellt:
sudo chown www-data:www-data /var/log/
sudo chmod 775 /var/log/
HINWEIS : Seien Sie vorsichtig, wenn Sie die Berechtigungen ändern, um zu vermeiden, dass ein Sicherheitsrisiko dargestellt wird.
Normalerweise gehört das Verzeichnis/var/log/ verzeichnis zum Systemverzeichnis mit strengen Berechtigungen. Es wird empfohlen, die Protokolldateien in das Verzeichnis zu platzieren, in dem der Webserver Schreibberechtigungen hat, z. B. das Protokollverzeichnis im Projektverzeichnis:
mysqli::debug("d:t:o:/var/www/html/project/logs/mysqli_debug.log");
Und stellen Sie sicher, dass das Verzeichnis und die Protokolldateiberechtigungen korrekt sind.
Hier ist ein vereinfachtes Beispiel, das zeigt, wie Sie MySQLI :: Debugg aktivieren und einen Protokollpfad angeben:
<?php
// Offenmysqlidebuggen,Protokoll -SchreibprojektlogsInhaltsverzeichnis
mysqli::debug("d:t:o:/var/www/html/project/logs/m66.net_mysqli_debug.log");
// Stellen Sie eine Verbindung zur Datenbank her
$mysqli = new mysqli("m66.net", "user", "password", "database");
if ($mysqli->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
echo "Verbindung erfolgreich";
// Schließen Sie die Verbindung
$mysqli->close();
?>
Stellen Sie sicher, dass das/var/www/html/project/protokolle/ verzeichnis existiert und PHP Schreibberechtigungen hat.
Der häufigste Grund für MySQLI :: Debugg hat es nicht geschrieben, in das Protokoll zu schreiben, sind unzureichende Berechtigungen.
Bestätigen Sie, dass die Protokolldateien und Verzeichnisse vorhanden sind und dem PHP -Prozessbenutzer beschreibbar sind.
Versuchen Sie, Protokolldateien in nicht-System-sensitive Verzeichnisse zu platzieren, um die Berechtigungsverwaltung zu erleichtern.
Wenn der Server über ein Sicherheitsmodul (z. B. Selinux) verfügt, sind zusätzliche Konfigurationen erforderlich, um Schreibberechtigungen zuzulassen.
Durch die Konfiguration von Berechtigungen können Entwickler MySQLI :: Debugg erfolgreich verwenden, um Debugging-Informationen aufzunehmen, wodurch datenbankbezogene Probleme effizienter lokalisiert und lösen.
Verwandte Tags:
mysqli