Ricerca…


Dumping di variabili

La funzione var_dump consente di scaricare il contenuto di una variabile (tipo e valore) per il debug.

Esempio:

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

Produzione:

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"
  }
}

Visualizzazione degli errori

Se vuoi che PHP visualizzi gli errori di runtime sulla pagina, devi abilitare display_errors , nel php.ini o usando la funzione ini_set .

È possibile scegliere quali errori visualizzare, con la funzione error_reporting (o ini), che accetta le costanti E_* , combinate usando operatori bit a bit .

PHP può visualizzare errori nel formato testo o HTML, a seconda dell'impostazione html_errors .

Esempio:

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

Output di testo normale: (il formato HTML differisce tra le implementazioni)

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

NOTA: Se si ha segnalazione di errore disabilitata in php.ini e abilitata durante il runtime, alcuni errori (come errori di analisi) non verranno visualizzati, perché si sono verificati prima dell'applicazione delle impostazioni di runtime.

Il modo più comune per gestire error_reporting è abilitarla completamente con E_ALL costante durante lo sviluppo e disabilitare la visualizzazione pubblica con display_errors in fase di produzione per nascondere gli interni degli script.

phpinfo ()

avvertimento

È imperativo che phpinfo venga utilizzato solo in un ambiente di sviluppo. Non rilascia mai codice contenente phpinfo in un ambiente di produzione

introduzione

Detto questo, può essere uno strumento utile per comprendere l'ambiente PHP (sistema operativo, configurazione, versioni, percorsi, moduli) in cui si sta lavorando, soprattutto quando si insegue un bug. È una semplice funzione integrata:

phpinfo();

Ha un parametro $what che consente di personalizzare l'output. L'impostazione predefinita è INFO_ALL , causando la visualizzazione di tutte le informazioni e viene comunemente utilizzata durante lo sviluppo per visualizzare lo stato corrente di PHP.

È possibile passare le INFO_* parametro INFO_* , combinate con operatori bit a bit per visualizzare un elenco personalizzato.

Puoi eseguirlo nel browser per un aspetto dettagliato ben formattato. Funziona anche nella CLI di PHP, dove puoi ridurla in less per una visualizzazione più semplice.

Esempio

phpinfo(INFO_CONFIGURATION | INFO_ENVIRONMENT | INFO_VARIABLES);

Questo mostrerà un elenco di direttive PHP ( ini_get ), ambiente ( $_ENV ) e variabili predefinite .

Xdebug

Xdebug è un'estensione PHP che fornisce funzionalità di debug e profiling.
Utilizza il protocollo di debug DBGp.

Ci sono alcune caratteristiche interessanti in questo strumento:

  • impila le tracce sugli errori
  • massima protezione del livello di nidificazione e tracciamento del tempo
  • utile sostituzione della funzione standard var_dump() per la visualizzazione delle variabili
  • consente di registrare tutte le chiamate di funzione, inclusi parametri e valori di ritorno in un file in diversi formati
  • analisi della copertura del codice
  • informazioni di profilazione
  • debug remoto (fornisce un'interfaccia per i client debugger che interagiscono con l'esecuzione di script PHP)

Come puoi vedere questa estensione è perfetta per l'ambiente di sviluppo. Soprattutto la funzionalità di debug remoto può aiutarti a eseguire il debug del tuo codice php senza numerosi var_dump e utilizzare il normale processo di debug come in C++ o Java .

Di solito l'installazione di questa estensione è molto semplice:

pecl install xdebug # install from pecl/pear

E attivalo nel tuo php.ini:

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

Nei casi più complicati vedi queste istruzioni

Quando usi questo strumento dovresti ricordare che:
XDebug non è adatto per gli ambienti di produzione

phpversion ()

introduzione

Quando si lavora con varie librerie e i relativi requisiti associati, è spesso necessario conoscere la versione del parser PHP corrente o uno dei suoi pacchetti.

Questa funzione accetta un singolo parametro opzionale sotto forma di nome estensione: phpversion('extension') . Se l'estensione in questione è installata, la funzione restituirà una stringa contenente il valore della versione. Tuttavia, se l'estensione non installata FALSE verrà restituita. Se il nome dell'estensione non viene fornito, la funzione restituirà la versione del parser PHP stesso.

Esempio

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

Segnalazione errori (utilizzali entrambi)

// 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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow