Lorsque vous utilisez l'extension MySQLI de PHP pour le débogage de la base de données, la fonction MySQLI :: Debug peut rédiger des informations de débogage dans le fichier journal spécifié, qui facilite les développeurs pour résoudre les problèmes. Cependant, de nombreux développeurs rencontrent le problème que les fichiers journaux ne peuvent pas être écrits lors de l'utilisation de MySqli :: Debug . Cet article analysera en détail les causes de ce problème et fournira des méthodes efficaces pour résoudre le problème d'autorisation.
MySQLI :: Debug est un outil de débogage fourni par l'extension MySQLI qui peut rédiger des informations de débogage MySQL dans les fichiers journaliers. La méthode d'appel est généralement:
mysqli::debug("d:t:o:/path/to/logfile.log");
Parmi eux, le format de paramètre est D: T: O: <Chemin de fichier logarithmique> , qui est utilisé pour spécifier le mode de débogage et l'emplacement de sortie du journal.
Quand mysqli :: debug ("d: t: o: /var/log/mysqli_debug.log"); Mais le fichier journal n'est pas écrit, la raison principale est généralement des problèmes d'autorisation, notamment:
Autorisations de fichiers insuffisantes : les utilisateurs utilisés par le processus PHP (tels que www-data, apache, etc.) n'ont pas d'autorisations d'écriture pour enregistrer des fichiers ou des répertoires.
Le répertoire n'existe pas ou le manque d'autorisations : le répertoire de fichiers journal spécifié n'existe pas, ou les autorisations de répertoire restreignent la création et l'écriture de fichiers.
SELINUX OU MODULE DE SÉCURITÉ RESTRICTIONS : Dans les systèmes avec des modules de sécurité (tels que Selinux, Apparmor) activés, l'accès PHP aux répertoires spécifiés peut être restreint.
Erreur de chemin : le chemin du fichier journal est écrit de manière incorrecte ou orthographiée par le mauvais, ce qui entraîne la localisation du fichier journal correct.
Voici un serveur Linux comme exemple pour introduire la solution:
Supposons que le chemin du fichier journal est /var/log/mysqli_debug.log :
ls -l /var/log/mysqli_debug.log
ls -ld /var/log/
Confirmez que le fichier /var/log/mysqli_debug.log existe et dispose d'autorisations écrivatives, ou confirmez que le répertoire / var / log / est disponible pour créer des fichiers.
L'identité utilisateur du processus PHP est généralement www-data , apache ou nginx , qui peut être confirmée via PS Aux | Grep Php .
Si le fichier journal n'existe pas, vous pouvez le créer manuellement d'abord:
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
Si vous souhaitez que le processus PHP crée des fichiers journaux dans le répertoire:
sudo chown www-data:www-data /var/log/
sudo chmod 775 /var/log/
Remarque : Soyez prudent lorsque vous modifiez les autorisations pour éviter de poser un risque de sécurité.
Habituellement, le répertoire / var / log / appartient au répertoire système avec des autorisations strictes. Il est recommandé de placer les fichiers journaux dans le répertoire où le serveur Web a des autorisations d'écriture, telles que le répertoire des journaux sous le répertoire du projet:
mysqli::debug("d:t:o:/var/www/html/project/logs/mysqli_debug.log");
Et assurez-vous que les autorisations du répertoire et du fichier journal sont correctes.
Voici un exemple simplifié montrant comment activer mysqli :: débogage et spécifier un chemin de journal:
<?php
// Ouvrirmysqlidéboguer,Projet de rédaction de journauxlogsTable des matières
mysqli::debug("d:t:o:/var/www/html/project/logs/m66.net_mysqli_debug.log");
// Connectez-vous à la base de données
$mysqli = new mysqli("m66.net", "user", "password", "database");
if ($mysqli->connect_error) {
die("Échec de la connexion: " . $mysqli->connect_error);
}
echo "Connexion avec succès";
// Fermer la connexion
$mysqli->close();
?>
Assurez-vous que le répertoire / var / www / html / project / logs / répertoire existe et PHP a des autorisations d'écriture.
La raison la plus courante de MySqli :: Debug n'a pas réussi à écrire dans le journal est des autorisations insuffisantes.
Confirmez que les fichiers journaux et les répertoires existent et sont écrits à l'utilisateur du processus PHP.
Essayez de placer des fichiers journaux dans des répertoires non sensibles au système pour faciliter la gestion de l'autorisation.
Si le serveur dispose d'un module de sécurité (tel que selinux), des configurations supplémentaires sont nécessaires pour permettre des autorisations d'écriture.
En configurant raisonnablement les autorisations, les développeurs peuvent utiliser avec succès MySqli :: Debug pour enregistrer les informations de débogage, ainsi localiser et résoudre plus efficacement les problèmes liés à la base de données.
Étiquettes associées:
mysqli