Jak mogę wyświetlać i zapisywać błędy PHP na IIS7?


29

Używamy PHP 5.2.5 na serwerze IIS 7 i mamy problemy z wyświetlaniem błędów PHP ... W tej chwili, kiedy mamy błąd PHP, serwer odsyła błąd 500 z komunikatem „Strona nie może być wyświetla się, ponieważ wystąpił wewnętrzny błąd serwera. ”

Może to być dobre ustawienie dla stron produkcyjnych, ale raczej irytujące na serwerze programistycznym ... ;-)

Próbowałem skonfigurować php.iniwyświetlanie błędów na ekranie, a także rejestrować je w określonym folderze, ale wygląda na to, że serwer przechwytuje wszystkie błędy wcześniej i zapobiega i obsługuje przez PHP ...

Czy ktoś wie, co musimy zrobić, aby IIS wyświetlał błędy PHP na ekranie? Wszelkie linki, porady lub samouczki na ten temat będą mile widziane!


Po pierwsze, upewnij się, że masz następujące elementy: log_errors=1, error_reporting=-1, log_errors_max_len=0.
Pacerier

ini_set("display_errors", "on");dodaj te linie w pliku php.
ELITE

Odpowiedzi:


35

Wystarczy podwójnie sprawdzić, czy masz ustawione logowanie error_reporting = E_ALL, a display_errors = Onna swoim php.ini? Zwykle wystarcza to do wyświetlenia tych błędów w IIS 7.

Następnie spójrz na swoje ustawienia IIS, ponieważ może to być ustawienie, aby wyświetlać tylko komunikaty o błędach lokalnie. W edytorze konfiguracji IIS 7 jest to w obszarze system.webServer-> httpErrors. Będziesz musiał zmienić errorMode na Szczegółowe z Szczegółowych Lokalnych. Oczywiście oznacza to teraz, że każdy przeglądający Twoją stronę będzie mógł zobaczyć błąd.

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Alternatywnie, jeśli chcesz, aby były lokalne, możesz użyć Pulpitu zdalnego, aby zalogować się na serwerze i uruchomić aplikację stamtąd, jeśli możesz.


1
Tak, sprawdziłem i to wszystko poprawnie skonfigurowane.
Ben

Dodano więcej informacji na temat rozwiązywania problemów
Sam Cogan

1
Zmieniło się errorMode na „Szczegółowe” z „SzczegółoweLokalneOnly”. Dzięki!
Ben

1
Musiałem również usunąć zbiór błędów HTTP w pliku system.webServer. Nie działałem z PHP, dopóki nie zrobiłem.

1
Podkreśl to system.webServermoją krwią i dodaj notatkę: „Tak, jest kombinacja”.
DiGi

2

Chciałem tylko dodać, że „istniejąca odpowiedź” powinna być ustawiona na „PassThrough”. Nie otrzymałem żadnych prawdziwych komunikatów o błędach bez tego dodatkowego ustawienia.


1
Gdzie znajduje się to ustawienie?
Eugene Mala,

0

Możesz to łatwo zrobić za pomocą GUI Menedżera usług IIS. Wybierz swoją witrynę i kliknij dwukrotnie Strony błędów. Następnie naciśnij „Edytuj ustawienia funkcji ...” i wybierz opcję „błędy szczegółowe” zamiast domyślnych „błędów szczegółowych w przypadku żądań lokalnych i niestandardowych stron błędów w przypadku żądań zdalnych”. Voilà, takie proste!


Gdzie można wyświetlać dzienniki i błędy?
JukEboX

0

Musiałem przejść do ustawień na serwerze sieciowym do konfiguracji php i tam jest ustawienie raportowania błędów i domyślnie jest ustawione na produkcję. Musiałem zmienić go na rozwój nawet po zmianie php.ini i sugestii tutaj. Używam iis 7.5 na 2008 R2.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.