Recherche…


Variables de dumping

La fonction var_dump vous permet de vider le contenu d'une variable (type et valeur) pour le débogage.

Exemple:

$array = [3.7, "string", 10, ["hello" => "world"], false, new DateTime()];
var_dump($array);

Sortie:

array(6) {
  [0]=>
  float(3.7)
  [1]=>
  string(6) "string"
  [2]=>
  int(10)
  [3]=>
  array(1) {
    ["hello"]=>
    string(5) "world"
  }
  [4]=>
  bool(false)
  [5]=>
  object(DateTime)#1 (3) {
    ["date"]=>
    string(26) "2016-07-24 13:51:07.000000"
    ["timezone_type"]=>
    int(3)
    ["timezone"]=>
    string(13) "Europe/Berlin"
  }
}

Affichage des erreurs

Si vous souhaitez que PHP affiche des erreurs d'exécution sur la page, vous devez activer display_errors , soit dans le ini_set php.ini , soit en utilisant la fonction ini_set .

Vous pouvez choisir les erreurs à afficher, avec la fonction error_reporting (ou ini), qui accepte les constantes E_* , combinées à l'aide d' opérateurs binaires .

PHP peut afficher des erreurs au format texte ou HTML, en fonction du paramètre html_errors .

Exemple:

ini_set("display_errors", true);
ini_set("html_errors", false); // Display errors in plain text
error_reporting(E_ALL & ~E_USER_NOTICE); // Display everything except E_USER_NOTICE

trigger_error("Pointless error"); // E_USER_NOTICE
echo $nonexistentVariable; // E_NOTICE
nonexistentFunction(); // E_ERROR

Sortie en texte brut: (le format HTML diffère entre les implémentations)

Notice: Undefined variable: nonexistentVariable in /path/to/file.php on line 7

Fatal error: Uncaught Error: Call to undefined function nonexistentFunction() in /path/to/file.php:8
Stack trace:
#0 {main}
  thrown in /path/to/file.php on line 8

REMARQUE: Si le rapport d'erreurs est désactivé dans php.ini et activé pendant l'exécution, certaines erreurs (telles que les erreurs d'analyse) ne seront pas affichées, car elles se sont produites avant l'application du paramètre d'exécution.

Le moyen courant de gérer error_reporting est de l'activer complètement avec E_ALL constant pendant le développement, et de le désactiver publiquement avec display_errors à l'étape de production pour masquer les composants internes de vos scripts.

phpinfo ()

Attention

Il est impératif que phpinfo ne soit utilisé que dans un environnement de développement. Ne libérez jamais de code contenant phpinfo dans un environnement de production

introduction

Cela dit, cela peut être un outil utile pour comprendre l'environnement PHP (système d'exploitation, configuration, versions, chemins, modules) dans lequel vous travaillez, en particulier lors de la poursuite d'un bogue. C'est une fonction intégrée simple:

phpinfo();

Il a un paramètre $what qui permet de personnaliser la sortie. La valeur par défaut est INFO_ALL , ce qui lui permet d'afficher toutes les informations et est couramment utilisé lors du développement pour connaître l'état actuel de PHP.

Vous pouvez passer les constantes du paramètre INFO_* , associées à des opérateurs au niveau des bits, pour afficher une liste personnalisée.

Vous pouvez l'exécuter dans le navigateur pour un aspect détaillé joliment formaté. Il fonctionne également en PHP CLI, où vous pouvez le diriger vers less pour une vue plus facile.

Exemple

phpinfo(INFO_CONFIGURATION | INFO_ENVIRONMENT | INFO_VARIABLES);

Cela affichera une liste de directives PHP ( ini_get ), environnement ( $_ENV ) et variables prédéfinies .

Xdebug

Xdebug est une extension PHP qui fournit des fonctionnalités de débogage et de profilage.
Il utilise le protocole de débogage DBGp.

Il y a quelques fonctionnalités intéressantes dans cet outil:

  • empiler les traces sur les erreurs
  • protection maximale du niveau d'imbrication et suivi du temps
  • remplacement utile de la fonction standard var_dump() pour l'affichage des variables
  • permet de consigner tous les appels de fonctions, y compris les paramètres et de renvoyer des valeurs dans un fichier sous différents formats
  • analyse de couverture de code
  • information de profilage
  • débogage à distance (fournit une interface pour les clients de débogueur qui interagissent avec des scripts PHP en cours d'exécution)

Comme vous pouvez le voir, cette extension est parfaitement adaptée à l'environnement de développement. La fonctionnalité de débogage à distance en particulier peut vous aider à déboguer votre code php sans de nombreux var_dump et à utiliser un processus de débogage normal, comme dans les C++ ou Java .

L'installation de cette extension est très simple:

pecl install xdebug # install from pecl/pear

Et l'activer dans votre php.ini:

zend_extension="/usr/local/php/modules/xdebug.so"

Dans les cas plus compliqués, voir ces instructions

Lorsque vous utilisez cet outil, vous devez vous rappeler que:
XDebug ne convient pas aux environnements de production

phpversion ()

introduction

Lorsque vous travaillez avec diverses bibliothèques et leurs exigences associées, il est souvent nécessaire de connaître la version de l'analyseur PHP actuel ou l'un de ses packages.

Cette fonction accepte un seul paramètre optionnel sous la forme d'un nom d'extension: phpversion('extension') . Si l'extension en question est installée, la fonction retournera une chaîne contenant la valeur de la version. Cependant, si l'extension non installée FALSE sera renvoyée. Si le nom de l'extension n'est pas fourni, la fonction retournera la version de l'analyseur PHP lui-même.

Exemple

print "Current PHP version: " . phpversion();
// Current PHP version: 7.0.8

print "Current cURL version: " . phpversion( 'curl' );
// Current cURL version: 7.0.8
// or
// false, no printed output if package is missing

Rapport d'erreur (utilisez les deux)

// this sets the configuration option for your environment
ini_set('display_errors', '1');

//-1 will allow all errors to be reported
error_reporting(-1);


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow