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);