2010-07-25 15 views
22

Chcę zrzucić zmienne żądania do pliku w celu debugowania. Jak to możliwe?

Odpowiedz

44
<?php 
$req_dump = print_r($_REQUEST, TRUE); 
$fp = fopen('request.log', 'a'); 
fwrite($fp, $req_dump); 
fclose($fp); 

Nie przeterminowane, ale powinno wykonać zadanie, wystarczy zmienić request.log na plik, który chcesz napisać.

+1

Tiny nieistotne szczegóły, ale pamiętasz zamykanie> –

+18

Zamknięcie> nie jest to konieczne, w ogóle?. W rzeczywistości jest to najlepsza praktyka przy pisaniu bibliotek/etc (nie, że jest to istotne tutaj), aby pominąć to, aby zapewnić przypadkowe wydrukowanie białych znaków, które mogłyby zepsuć buforowanie/nagłówki/etc. – 46bit

+4

Ja osobiście lubię 'var_export ($ var, true)'. – Cole

4

Użyj funkcji serialize() do zrzutu. Dump $_SERVER, $_COOKIE, $_POST i $_GET oddzielnie (może przejść do tego samego pliku). Jeśli planujesz debugowanie danymi, warto wiedzieć, czy dane były częścią żądania POST lub żądania GET.

Zrzucanie wszystkiego jest dobre do debugowania w fazie rozwoju, ale nie w produkcji. Jeśli twoja aplikacja nie ma wielu użytkowników, może również pracować w produkcji. Jeśli spodziewasz się wielu użytkowników, rozważ zrzut tylko danych $_POST lub ogranicz zmienne serwera do tych rozpoczynających się od HTTP_.

7

myślę obecnie metoda ta jest łatwiejsza i szybsza:

$req_dump = print_r($_REQUEST, true); 
$fp = file_put_contents('request.log', $req_dump); 
+3

Będziesz prawdopodobnie chcesz dołączyć do dziennika: 'file_put_contents ('request.log', $ req_dump, FILE_APPEND)' – jmb