Szukaj…


Zmienne zrzutowe

Funkcja var_dump pozwala zrzucić zawartość zmiennej (typ i wartość) w celu debugowania.

Przykład:

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

Wynik:

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

Wyświetlanie błędów

Jeśli chcesz, aby PHP wyświetlało błędy czasu wykonywania na stronie, musisz włączyć display_errors , albo w php.ini albo przy użyciu funkcji ini_set .

Możesz wybrać, które błędy mają być wyświetlane, za pomocą funkcji error_reporting (lub ini), która akceptuje stałe E_* , połączone za pomocą operatorów bitowych .

PHP może wyświetlać błędy w formacie tekstowym lub HTML, w zależności od ustawienia html_errors .

Przykład:

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

Zwykły tekst: (format HTML różni się w zależności od implementacji)

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

UWAGA: Jeśli masz wyłączone raportowanie błędów w php.ini i włączasz je w czasie wykonywania, niektóre błędy (takie jak błędy analizy) nie będą wyświetlane, ponieważ wystąpiły one przed zastosowaniem ustawienia środowiska wykonawczego.

Powszechnym sposobem obsługi error_reporting jest włączenie go w pełni ze stałą E_ALL podczas programowania i wyłączenie publicznego wyświetlania go za pomocą display_errors na etapie produkcji, aby ukryć wewnętrzne skrypty.

phpinfo ()

Ostrzeżenie

Konieczne jest, aby phpinfo było używane tylko w środowisku programistycznym. Nigdy nie wypuszczaj kodu zawierającego phpinfo do środowiska produkcyjnego

Wprowadzenie

To powiedziawszy, może być użytecznym narzędziem do zrozumienia środowiska PHP (system operacyjny, konfiguracja, wersje, ścieżki, moduły), w którym pracujesz, szczególnie gdy ścigasz błąd. Jest to prosta wbudowana funkcja:

phpinfo();

Ma jeden parametr $what pozwala dostosować dane wyjściowe. Domyślnie jest to INFO_ALL , co powoduje, że wyświetla wszystkie informacje i jest często używane podczas programowania do sprawdzania aktualnego stanu PHP.

Możesz przekazać parametr INFO_* stałe w połączeniu z operatorami INFO_* , aby wyświetlić dostosowaną listę.

Możesz uruchomić go w przeglądarce, aby uzyskać ładnie sformatowany szczegółowy wygląd. Działa również w interfejsie CLI PHP, w którym można go potokować w less aby ułatwić przeglądanie.

Przykład

phpinfo(INFO_CONFIGURATION | INFO_ENVIRONMENT | INFO_VARIABLES);

Spowoduje to wyświetlenie listy dyrektyw PHP ( ini_get ), środowiska ( $_ENV ) i predefiniowanych zmiennych.

Xdebug

Xdebug to rozszerzenie PHP zapewniające funkcje debugowania i profilowania.
Wykorzystuje protokół debugowania DBGp.

W tym narzędziu jest kilka fajnych funkcji:

  • stosy śladów błędów
  • maksymalna ochrona poziomu zagnieżdżenia i śledzenie czasu
  • pomocna zamiana standardowej funkcji var_dump() do wyświetlania zmiennych
  • pozwala rejestrować wszystkie wywołania funkcji, w tym parametry i zwracać wartości do pliku w różnych formatach
  • analiza zasięgu kodu
  • informacje o profilowaniu
  • zdalne debugowanie (zapewnia interfejs dla klientów debugujących, które współdziałają z uruchomionymi skryptami PHP)

Jak widać, to rozszerzenie doskonale nadaje się do środowiska programistycznego. Szczególnie funkcja zdalnego debugowania może pomóc w debugowaniu kodu php bez wielu var_dump i użyć normalnego procesu debugowania jak w językach C++ lub Java .

Zwykle instalacja tego rozszerzenia jest bardzo prosta:

pecl install xdebug # install from pecl/pear

I aktywuj go w swoim php.ini:

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

W bardziej skomplikowanych przypadkach zobacz tę instrukcję

Korzystając z tego narzędzia, należy pamiętać, że:
XDebug nie nadaje się do środowisk produkcyjnych

phpversion ()

Wprowadzenie

Podczas pracy z różnymi bibliotekami i powiązanymi z nimi wymaganiami często trzeba znać wersję bieżącego parsera PHP lub jednego z jego pakietów.

Ta funkcja przyjmuje pojedynczy opcjonalny parametr w postaci nazwy rozszerzenia: phpversion('extension') . Jeśli to rozszerzenie jest zainstalowane, funkcja zwróci ciąg zawierający wartość wersji. Jeśli jednak rozszerzenie nie zostanie zainstalowane, FALSE zostanie zwrócone. Jeśli nazwa rozszerzenia nie zostanie podana, funkcja zwróci wersję samego parsera PHP.

Przykład

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

Raportowanie błędów (użyj ich obu)

// 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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow