PHP
felsökning
Sök…
Dumpningsvariabler
Funktionen var_dump
låter dig dumpa innehållet i en variabel (typ och värde) för felsökning.
Exempel:
$array = [3.7, "string", 10, ["hello" => "world"], false, new DateTime()];
var_dump($array);
Produktion:
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"
}
}
Visar fel
Om du vill att PHP ska visa runtime-fel på sidan måste du aktivera display_errors
, antingen i php.ini
eller använda ini_set
funktionen.
Du kan välja vilka fel som ska visas, med error_reporting
(eller i ini) -funktionen, som accepterar E_*
-konstanter , kombinerade med bitvisa operatörer .
PHP kan visa fel i text- eller HTML-format, beroende på html_errors
inställningen.
Exempel:
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
Vanlig textutgång: (HTML-format skiljer sig mellan implementeringarna)
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
OBS: Om du har felrapportering inaktiverad i php.ini och aktiverar den under körning visas inte några fel (till exempel analysfel) eftersom de inträffade innan inställningen av körtid användes.
Det vanliga sättet att hantera error_reporting
är att aktivera det helt med E_ALL
konstant under utvecklingen och att inaktivera offentligt visning av det med display_errors
på produktionssteget för att dölja internerna i dina skript.
phpinfo ()
Varning
Det är absolut nödvändigt att phpinfo
endast används i en utvecklingsmiljö. Släpp aldrig kod som innehåller phpinfo
i en produktionsmiljö
Introduktion
Med det sagt kan det vara ett användbart verktyg för att förstå PHP-miljön (OS, konfiguration, versioner, sökvägar, moduler) där du arbetar, särskilt när du jagar ett fel. Det är en enkel inbyggd funktion:
phpinfo();
Den har en parameter $what
som gör det möjligt att anpassa utgången. Standardvärdet är INFO_ALL
, vilket gör att den visar all information och används vanligtvis under utvecklingen för att se det aktuella läget för PHP.
Du kan passera parametern INFO_*
, i kombination med bitvisa operatörer för att se en anpassad lista.
Du kan köra den i webbläsaren för ett snyggt formaterat detaljerat utseende. Det fungerar också i PHP CLI, där du kan leda det till less
för enklare visning.
Exempel
phpinfo(INFO_CONFIGURATION | INFO_ENVIRONMENT | INFO_VARIABLES);
Detta visar en lista över PHP-direktiv ( ini_get
), miljö ( $_ENV
) och fördefinierade variabler.
xdebug
Xdebug är en PHP-förlängning som tillhandahåller felsökning och profileringskapacitet.
Den använder DBGp-felsökningsprotokollet.
Det finns några fina funktioner i det här verktyget:
- stapla spår på fel
- maximalt skydd för häckningsnivå och tidspårning
- användbar ersättning av
var_dump()
standardvar_dump()
för att visa variabler - gör det möjligt att logga alla funktionssamtal, inklusive parametrar och returnera värden till en fil i olika format
- kodtäckningsanalys
- profilering av information
- fjärrfelsökning (tillhandahåller gränssnitt för felsökningsklienter som interagerar med köra PHP-skript)
Som ni ser är denna tillägg perfekt för utvecklingsmiljö. Speciellt fjärrfelsökningsfunktion kan hjälpa dig att felsöka din php-kod utan många var_dumps och använda normal felsökningsprocess som på C++
eller Java
språk.
Vanligtvis är installationen av denna tillägg mycket enkel:
pecl install xdebug # install from pecl/pear
Och aktivera det i din php.ini:
zend_extension="/usr/local/php/modules/xdebug.so"
Se mer instruktioner i mer komplicerade fall
När du använder detta verktyg bör du komma ihåg att:
XDebug är inte lämplig för produktionsmiljöer
phpversion ()
Introduktion
När du arbetar med olika bibliotek och deras tillhörande krav är det ofta nödvändigt att känna till versionen av nuvarande PHP-parser eller ett av dess paket.
Denna funktion accepterar en enda valfri parameter i form av anknytningsnamn: phpversion('extension')
. Om tillägget i fråga är installerat kommer funktionen att returnera en sträng som innehåller versionvärde. Men om tillägget som inte är installerat kommer FALSE
att returneras. Om anknytningsnamnet inte anges kommer funktionen att returnera versionen av PHP-parser själv.
Exempel
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
Felrapportering (använd dem båda)
// this sets the configuration option for your environment
ini_set('display_errors', '1');
//-1 will allow all errors to be reported
error_reporting(-1);