Maison > développement back-end > Problème PHP > Quelles sont les méthodes de débogage en PHP ?

Quelles sont les méthodes de débogage en PHP ?

青灯夜游
Libérer: 2023-03-15 12:28:02
original
10257 Les gens l'ont consulté

Les méthodes de débogage en PHP sont : 1. Ajoutez les instructions echo, var_dump, print_r et exit dans le code PHP et imprimez les informations via le navigateur pour le débogage ; 2. Utilisez Xdebug pour le débogage ;

Quelles sont les méthodes de débogage en PHP ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 7.1, ordinateur DELL G3

Méthodes de débogage couramment utilisées pour PHP

Déboguer en imprimant les informations depuis le navigateur

méthode

Ajoutez echo, var_dump, print_r et quittez le code et affichez la sortie dans le navigateur.

Avantages et inconvénients

Avantages :

  • Simple, facile à utiliser, pas besoin d'installer de plug-ins
  • Pour du code auto-écrit ou des frameworks familiers, vous pouvez l'utiliser comme ceci

Inconvénients :

  • Pour une logique multi-branches, vous devez ajouter beaucoup de code ou essayer plusieurs fois
  • Pour une logique inconnue, elle ne peut pas refléter le processus d'exécution complet.
  • Il est possible de laisser les instructions de débogage dans le projet
  • Impossible d'exécuter une seule étape

Conseils

Lors du débogage, afin de formater les variables de sortie, vous devez souvent implémenter votre propre dump () dans la fonction code projet>. Avec Composer, la fonction <code>dump() du package symfony/var-dumper peut être installée globalement, la rendant disponible à tous les projets sans modifier le projet. dump() 函数。利用 Composer,可以全局安装 symfony/var-dumper 包中的 dump() 函数,使所有项目都可以使用,而无需改动项目。

  • 全局安装 symfony/var-dumper 包:
    默认会安装到 ${HOME}/.config/composer 目录
composer global require symfony/var-dumper
Copier après la connexion
  • 修改 php.ini 文件,执行 PHP 代码之前先 include 指定的文件
auto_prepend_file = ${HOME}/.config/composer/vendor/autoload.php
Copier après la connexion

使用 Xdebug 进行调试

XDebug 是 C/S 结构,其中 Client 是 PHP 中安装的 Xdebug,Server 是 IDE 中安装的插件,使用 DBGP 协议通信。PHP 运行脚本时,通过 Xdebug 插件向 IDE 发送调试信息,并接收 IDE 发过来的控制信号。

需要为 PHP 安装并开启 Xdebug,然后设置 IDE 的 Xdebug 插件,使二者可以通信。

优缺点

  • 支持单步调试和任意变量值的获取
  • 配置复杂,需要 IDE 安装插件
  • 支持跟浏览器的配合,需要请求中携带 XDEBUG_SESSION_START 参数

Web App 调试

对于 web 应用,要开启 Xdebug 调试模式,必须在浏览器发送的请求中添加额外的标志。可以在 GET/POST/Cookie 参数中添加 XDEBUG_SESSION_START=session_name,这样 Xdebug 就明白这个请求需要调试,去连接 IDE。

但每次手工设置也很麻烦,有两种方式简化操作:

  • 使用 IDE 提供的方式。对于 PhpStorm,参考 Debugging PHP Web Applications with Run Debug Configurations。使用时需要配置好 IDE 中的 Web Server,然后设置一个 PHP Web Application,点击 Debug 按钮开始调试,这时 IDE会自动打开浏览器并输好网址,并添加 XDEBUG_SESSION_START=session_name
  • 使用浏览器插件,打开插件的调试开关后,插件可以自动在请求中带上对应的 Cookie。对于 Chrome 可以安装 Xdebug helper。

通过 console 终端进行调试(CLI 方式)

对于非 web 应用,例如定时任务或单元测试,可以直接在控制台进行调试。

PhpStorm 中通过 Alt+F12 快捷键打开命令行终端。但是因为 IDE 中只能显示一个终端,在开启调试后的调试终端会覆盖命令行终端,所以还是单独开一个命令行终端吧(Windows 下可以使用 DOS 窗口或 PowerShell)。

方法及原理

web 应用通过 GET/POST/Cookie 参数标志调试请求,而非 web 应用则通过在命令行终端设置环境变量来开启调试。

两步:

  • 设置环境变量 XDEBUG_CONFIG="idekey=session_name",这个 idekey 需要跟 php.ini
  • Installez le package symfony/var-dumper globalement :
    Par défaut, il sera installé dans le répertoire ${HOME}/.config/composer
D:\lnmp\php72\php.exe -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9001 -dxdebug.remote_host=127.0.0.1 D:\lihongfeng\workspace\untitled\index.php
Copier après la connexion
Copier après la connexion

Quelles sont les méthodes de débogage en PHP ?Modification du fichier php.ini, inclure le fichier spécifié avant d'exécuter le code PHP

export XDEBUG_CONFIG="idekey=session_name" // 设置环境变量
echo $XDEBUG_CONFIG // 查看环境变量
unset XDEBUG_CONFIG // 删除环境变量
Copier après la connexion
Copier après la connexion

Utiliser Xdebug pour le débogage🎜🎜🎜🎜XDebug est une structure C/S, où Le client est le Xdebug installé dans PHP, le serveur est un plug-in installé dans l'EDI et communique via le protocole DBGP. Lorsque PHP exécute un script, il envoie des informations de débogage à l'EDI via le plug-in Xdebug et reçoit des signaux de contrôle de l'EDI. 🎜🎜Vous devez installer et activer Xdebug pour PHP, puis configurer le plug-in Xdebug de l'IDE afin que les deux puissent communiquer. "Avantages et inconvénients" Paramètre >XDEBUG_SESSION_START 🎜🎜🎜🎜Débogage de l'application Web🎜🎜🎜Pour les applications Web, pour activer le mode de débogage Xdebug, des indicateurs supplémentaires doivent être ajoutés à la requête envoyée par le navigateur. Vous pouvez ajouter XDEBUG_SESSION_START=session_name dans les paramètres GET/POST/Cookie, afin que Xdebug comprenne que cette requête doit être déboguée et se connecte à l'EDI. 🎜🎜Mais le réglage manuel à chaque fois est également gênant. Il existe deux façons de simplifier l'opération : 🎜🎜🎜Utilisez la méthode fournie par l'IDE. Pour PhpStorm, consultez Débogage d'applications Web PHP avec exécuter des configurations de débogage. Lorsque vous l'utilisez, vous devez configurer le serveur Web dans l'IDE, puis configurer une application Web PHP, cliquer sur le bouton Déboguer pour démarrer le débogage, puis l'IDE ouvrira automatiquement le navigateur et entrera l'URL, et ajoutera XDEBUG_SESSION_START =nom_session. 🎜🎜Utilisez un plug-in de navigateur Après avoir activé le commutateur de débogage du plug-in, le plug-in peut automatiquement apporter le cookie correspondant dans la requête. Pour Chrome, vous pouvez installer l'assistant Xdebug. 🎜🎜🎜🎜🎜Débogage via le terminal console (mode CLI) 🎜🎜🎜🎜Pour les applications non Web, telles que les tâches planifiées ou les tests unitaires, vous pouvez déboguer directement dans la console. 🎜🎜Dans PhpStorm, utilisez la touche de raccourci Alt+F12 pour ouvrir le terminal de ligne de commande. Cependant, comme un seul terminal peut être affiché dans l'IDE, le terminal de débogage une fois le débogage activé couvrira le terminal de ligne de commande, il est donc préférable d'ouvrir un terminal de ligne de commande séparé (vous pouvez utiliser une fenêtre DOS ou PowerShell sous Windows ). 🎜🎜🎜Méthodes et principes🎜🎜🎜Les applications Web déboguent les requêtes via les indicateurs de paramètres GET/POST/Cookie, tandis que les applications non Web permettent le débogage en définissant des variables d'environnement dans le terminal de ligne de commande. 🎜🎜Deux étapes : 🎜🎜🎜Définissez la variable d'environnement XDEBUG_CONFIG="idekey=session_name" Cette idekey doit être la même que celle définie dans la section Xdebug de php.ini<. /code>. 🎜🎜Exécutez le script dans le terminal de ligne de commande. Une fois exécuté, le terminal de débogage de l'IDE sera évoqué, permettant un débogage en une seule étape, et les résultats de sortie seront affichés dans le terminal de ligne de commande en temps réel. 🎜🎜🎜🎜🎜🎜IDE fournit généralement des opérations de raccourci pour PHPStorm, vous pouvez vous référer à Débogage des scripts PHP CLI avec PhpStorm. 🎜🎜Après avoir démarré le débogage via l'IDE, l'IDE démarrera le plug-in Xdebug pour écouter un certain port (PhpStorm est par défaut 9000, mais cela entre en conflit avec PHP-FPM et peut être modifié en 9001) pour obtenir les informations de débogage renvoyées. par le serveur PHP. 🎜
D:\lnmp\php72\php.exe -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9001 -dxdebug.remote_host=127.0.0.1 D:\lihongfeng\workspace\untitled\index.php
Copier après la connexion
Copier après la connexion

设置、查看和释放环境变量

  • Linux
export XDEBUG_CONFIG="idekey=session_name" // 设置环境变量
echo $XDEBUG_CONFIG // 查看环境变量
unset XDEBUG_CONFIG // 删除环境变量
Copier après la connexion
Copier après la connexion
  • Windows
set XDEBUG_CONFIG="idekey=session_name" // 设置环境变量
echo %XDEBUG_CONFIG% // 查看环境变量
set XDEBUG_CONFIG // 查看环境变量
set XDEBUG_CONFIG= // 删除环境变量
Copier après la connexion

推荐学习:《PHP视频教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal