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() standard var_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);


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow