Position actuelle: Accueil> Derniers articles> Conseils pour utiliser MySqli :: Debug dans un environnement Docker ou Virtual Machine

Conseils pour utiliser MySqli :: Debug dans un environnement Docker ou Virtual Machine

M66 2025-06-01

Dans le développement de PHP, MySqli :: Debug () est une fonction peu connue mais très utile. Il peut être utilisé pour déboguer l'exécution interne des extensions MySQLI, en particulier lorsqu'il s'agit de connexions de base de données complexes ou de problèmes de requête.

Cet article expliquera comment activer et utiliser MySqli :: Debug () dans un environnement Docker ou Virtual Machine pour améliorer l'efficacité du débogage.

1. Qu'est-ce que MySqli :: Debug () ?

MySQLI :: Debug () est un outil de débogage fourni par l'extension PHP MySQLI. Sa fonction consiste à sortir les informations de débogage de MySQLI dans le fichier spécifié. Il ne sortit pas sur la sortie ou le navigateur standard, mais écrit pour enregistrer des fichiers sur le serveur.

La méthode d'appel est très simple:

 mysqli::debug("d:t:o,/tmp/client.trace");

La signification du paramètre "d: t: o, / tmp / client.trace" est:

  • D : Débogage des informations;

  • T : Informations sur le thread;

  • O : sortie en fichier;

  • /tmp/client.trace : chemin de fichier de sortie.

Remarque: La prise en charge de débogage de la bibliothèque client MySQL doit être activée avant d'utiliser cette fonction, sinon cet appel de fonction ne sera pas valide.

2. Activer la fonction de débogage dans Docker ou Virtual Machine

Lorsque vous utilisez cette fonction dans un conteneur Docker ou une machine virtuelle, deux conditions préalables doivent être prêtées à savoir:

  1. PHP doit s'exécuter en mode CLI ou FPM et activer le pilote mysqlnd ;

  2. PHP dans un conteneur ou une machine virtuelle doit être compilé avec le support de débogage.

1. Confirmez que PHP prend en charge la fonction de débogage

Exécutez la commande suivante pour vérifier si PHP prend en charge le débogage de MySQLI:

 php -i | grep 'Client API version'

Si le résultat contient mysqlnd , cela signifie le support. Sinon, vous devrez peut-être recompiler PHP ou installer une image PHP contenant MySqlnd .

2. Exemple Dockerfile (Activer Mysqli Debug)

Si vous utilisez Docker, vous pouvez le configurer dans le dockerfile comme suit:

 FROM php:8.2-cli

RUN docker-php-ext-install mysqli \
    && echo "mysqli.allow_local_infile=On" >> /usr/local/etc/php/php.ini

# Facultatif:Chemin de fichier Mount Debug
VOLUME /tmp

Ensuite, rédigez le test de code suivant dans PHP:

 <?php
mysqli::debug("d:t:o,/tmp/client.trace");

$mysqli = new mysqli("db.m66.net", "root", "password", "test");

if ($mysqli->connect_errno) {
    echo "Échec de la connexion: " . $mysqli->connect_error;
    exit();
}

$result = $mysqli->query("SELECT * FROM users");

while ($row = $result->fetch_assoc()) {
    print_r($row);
}

$mysqli->close();

Après avoir exécuté ce script, vous pouvez afficher les informations de débogage dans le fichier /tmp/client.trace .

3. Description de l'environnement de la machine virtuelle (comme l'utilisation de Vagrant)

L'utilisation dans une machine virtuelle n'est pas différente de l'utilisation de Native ou Docker. La seule chose à noter est que le processus PHP doit avoir l'autorisation d'écrire sur le chemin du fichier journal que vous définissez, tel que / tmp ou le répertoire de montage que vous spécifiez.

3. Exemple de journal de débogage

Le contenu du journal de débogage est à peu près le suivant (extrait):

 >mysql_real_connect
>mysql_send_query
<mysql_read_query_result
...

Grâce à ces journaux, vous pouvez localiser les raisons de l'échec de la connexion, l'exécution de requêtes lentes, et même trouver des retards causés par les erreurs de configuration DNS.

4. Recommandations de sécurité

Dans les environnements de production, vous devez éviter d'activer MySqli :: Debug () car il divulguera des données sensibles telles que les informations de connexion de la base de données et le contenu de requête. Il n'est recommandé que dans les environnements de développement ou de test, et veillez à nettoyer les fichiers journaux générés.

5. Résumé

L'utilisation de MySQLI :: Debug () dans Docker ou Virtual Machine Environment n'est pas compliquée, la clé est:

  • Assurez-vous que PHP utilise MySqlnd ;

  • Définir les autorisations pour les chemins de journal dans le conteneur ou la machine virtuelle;

  • Désactiver ou supprimer les journaux à temps après la fin du débogage.

En utilisant cet outil raisonnablement, il peut être plus efficace et précis lors du dépannage des problèmes de base de données.

Si vous avez des exigences de débogage similaires, vous pourriez aussi bien l'essayer!