Chciałbym zdebugować kod PHP, ale wydaje mi się, że wydrukowanie dziennika na ekranie lub do pliku jest dla mnie w porządku.
Jak wydrukować dziennik w kodzie PHP?
Zwykłe print
/ printf
wydaje się iść do wyjścia HTML, a nie do konsoli.
Mam serwer Apache wykonujący kod PHP.
printf
pytanie dostanie tyle pozytywnych głosów ...Odpowiedzi:
Mniej znaną sztuczką jest to, że mod_php mapuje stderr do dziennika Apache. I jest do tego strumień, więc
file_put_contents('php://stderr', print_r($foo, TRUE))
ładnie zrzuci wartość$foo
do dziennika błędów Apache.źródło
var_export($foo, true)
zamiastprint_r($foo, true)
ifprint_r
nie zapewnia informacji o typie, których potrzebujesz.może się przydać
źródło
Możesz użyć error_log, aby wysłać do swojego serwera plik dziennika błędów (lub opcjonalnie innego pliku, jeśli chcesz)
źródło
Jeśli używasz Linuksa:
lub
a potem w konsoli
Spowoduje to ciągłe wyświetlanie ostatniej linii umieszczonej w pliku.
źródło
Musisz zmienić swoje nastawienie. Piszesz PHP, a nie cokolwiek innego, do czego przywykłeś. Debugowanie w PHP nie odbywa się w środowisku konsoli.
W PHP masz 3 kategorie rozwiązań do debugowania:
Naucz się ich używać zamiast próbować sprawić, by PHP zachowywało się jak każdy inny język, do którego jesteś przyzwyczajony.
źródło
Czy debugujesz na konsoli? Istnieją różne opcje debugowania PHP. Najpopularniejszą funkcją używaną do szybkiego i brudnego debugowania jest var_dump .
To powiedziawszy i nie na marginesie, chociaż var_dump jest niesamowity i wiele osób robi wszystko z tym właśnie, istnieją inne narzędzia i techniki, które mogą trochę urozmaicić.
Rzeczy, które mogą pomóc w przypadku debugowania na stronie internetowej, wrap
<pre> </pre>
tagi wokół instrukcji dump, aby zapewnić odpowiednie formatowanie tablic i obiektów.To znaczy:
I na koniec upewnij się, że debugowanie obsługi błędów jest ustawione na wyświetlanie błędów. Dodanie tego na początku skryptu może być potrzebne, jeśli nie możesz uzyskać dostępu do konfiguracji serwera, aby to zrobić.
Powodzenia!
źródło
Jeśli nie chcesz integrować frameworka takiego jak Zend , możesz użyć metody trigger_error , aby zalogować się do dziennika błędów php.
źródło
Po prostu sposób to trigger_error:
ale nie możesz umieścić tablic lub obiektów, dlatego użyj
źródło
Możesz także pisać do takiego pliku:
Upewnij się, że ustawione są odpowiednie uprawnienia, aby php mógł uzyskać dostęp i zapisywać do pliku (
775
).źródło
Możesz użyć modułu php curl, aby wywoływać http://liveoutput.com/ . Działa to świetnie w bezpiecznym środowisku korporacyjnym, w którym istnieją pewne ograniczenia w php.ini, które ograniczają użycie
file_put_contents
.źródło
To świetne narzędzie do debugowania i logowania php: PHp Debugger & Logger
Działa od razu po wyjęciu z pudełka z zaledwie 3 liniami kodu. Może wysyłać komunikaty do konsoli js w celu debugowania Ajax i może zastąpić obsługę błędów. Zrzuca również informacje o zmiennych, takich jak var_dump () i print_r (), ale w bardziej czytelnym formacie. Bardzo fajne narzędzie!
źródło
Używałem wielu z nich, ale ponieważ zwykle muszę debugować podczas programowania, a ponieważ programuję na localhost, postępowałem zgodnie z radami innych i teraz piszę do konsoli debugowania JavaScript w przeglądarce (patrz http: //www.codeforest. net / debugging-php-in-browserers-javascript-console ).
Oznacza to, że mogę spojrzeć na stronę internetową, którą moje PHP generuje w mojej przeglądarce i nacisnąć F12, aby szybko pokazać / ukryć wszelkie ślady debugowania.
Ponieważ ciągle patrzę na narzędzia programistyczne dla debuggera, układu CSS itp., Warto spojrzeć tam na mój loggon PHP.
Jeśli ktoś zdecyduje się na ten kod, wprowadziłem jedną drobną zmianę. Po
function debug($name, $var = null, $type = LOG) {
dodałem
$name = 'PHP: ' . $name;
Dzieje się tak, ponieważ PHP po stronie mojego serwera generuje HTML zawierający JavaScript i uważam, że przydatne jest rozróżnianie danych wyjściowych z PHP i JS.
(Uwaga: obecnie aktualizuję to, aby umożliwić mi włączanie i wyłączanie różnych typów danych wyjściowych: z PHP, z JS i dostępu do bazy danych)
źródło
Używam cakephp, więc używam:
źródło
Możesz użyć:
źródło
Możesz użyć
lub jeśli chcesz wydrukować to oświadczenie w dzienniku, którego możesz użyć
źródło