Afișarea erorilor la diferite niveluri în PHP

Când lucrează cu un site web, fiecare dezvoltator s-a confruntat cu o situație în care, atunci când activează un modul, își adaugă propriul cod sau efectuează alte modificări site-ului web, un așa-numit ECRANUL ALB AL MORTII (Ecran alb moarte), care este de obicei cauzată de o eroare PHP. Prima acțiune a dezvoltatorului, desigur, este să anuleze modificările care au dus la această eroare. Dar eroarea trebuie corectată, ceea ce înseamnă că trebuie să ne uităm la ce anume cauzează să apară.

Este bine dacă dezvoltatorul are ocazia să se uite la jurnalele Apache. Dar aici apar dificultăți: nu fiecare hoster le întreține și nu orice programator are acces la ele. Până la urmă, pentru a le urmări va trebui să mergi pe server. Dar toți programatorii sunt leneși, ceea ce înseamnă că trebuie să căutăm o soluție mai simplă. Și această soluție este de a afișa direct erorile pe ecran.

Nu țin cont de pagina din Drupal care vă permite să afișați erori pe ecran (admin/settings/error-reporting), pentru că... Nu te va salva de un ecran alb. Afișează erori care rup modulele, nu site-ul în întregime. Acestea. daca uiti sa-l pui (de exemplu) isset pentru o variabilă care poate să nu fie definită, pe ecran va fi afișată o eroare. Dar dacă uitați să puneți punct și virgulă după efectuarea operației, atunci Drupal nu va mai afișa această eroare și veți vedea un ecran alb.

Există mai multe moduri de a activa ieșirea erorilor.

Metoda 1: Activarea afișării erorilor prin php.ini

Dacă aveți acces (bine, ce dacă) la server, atunci Fișier de configurare php.ini găsiți parametrul raportarea eroriiși setați-i valoarea la E_TOȚI.

Error_reporting = E_ALL

Metoda 2. Activarea afișării erorilor prin .htaccess

La rădăcina Drupal există un fișier .htaccess care reglementează procesele de încărcare a paginilor. Pentru a activa mesageria, deschideți-o și adăugați următoarele două rânduri:

Php_flag display_errors pe php_flag display_startup_errors activat

Metoda 3. Activarea afișării erorilor prin index.php

Să atingem din nou fișierele din rădăcina Drupal, dar de data aceasta index.php. Aici, pentru a afișa mesaje, trebuie să adăugați error_reporting(7) înainte de linia cu conexiunea bootstrap.ini:

Raportare_eroare(7); require_once "./includes/bootstrap.inc";

Metoda 4: Activarea afișării erorilor prin settings.php

Voi spune imediat că această metodă funcționează numai pentru Drupal 7. Există un fișier settings.php în folderul site-uri/implicit/. Deschideți-l și adăugați aceste rânduri:

Raportare_eroare(-1); $conf [ "nivel_eroare" ] = 2 ; ini_set ("display_errors" , TRUE ) ; ini_set ("display_startup_errors" , TRUE );

Indiferent cât de atent și de atent este un programator web, erorile și inexactitățile sunt posibile în timpul muncii sale. Ca rezultat, acest lucru poate duce la defecțiuni ale site-ului sau ale serviciului. Pentru depanare în timpul dezvoltării proiectului, este posibilă activarea erorilor în PHP.

Cum functioneaza?

PHP reacționează cu siguranță la acest cod de script. În unele cazuri efectuează acțiunea necesară, în altele afișează o eroare. Acest mecanism ajută dezvoltatorul să corecteze rapid defectele în momentul implementării unei secțiuni de cod.

Cu toate acestea, ieșirea erorilor în PHP nu este întotdeauna necesară. După finalizarea dezvoltării proiectului, această funcție este dezactivată pentru a evita piratarea sau accesul neautorizat.

Setări

Fișierul php.ini este responsabil pentru întreaga configurație a interpretorului PHP. Conține directiva error_reporting, care determină rezultatul erorilor în PHP. Cu toate acestea, deși include gestionarea excepțiilor, display_errors este responsabil pentru afișarea acestora în fereastra browserului. Dacă este dezactivat, sistemul va afișa o pagină goală în loc de o eroare.

Clasificarea excepțiilor

Ieșirea erorilor în PHP poate fi împărțită în mai multe categorii:

    erori care vor determina oprirea rulării scriptului. Cele așa-zise fatale. Acestea includ E_ERROR, E_COMPILE_ERROR;

    erori care pot fi remediate. Valorile lor pentru directiva error_reporting pot fi: E_WARNING, E_NOTICE și altele.

Merită să luați în considerare fiecare tip mai detaliat și să descrieți funcționalitatea acestuia.

    E_EROARE. De obicei, acest tip se referă la erori care nu pot fi rezolvate rapid sau scriptul nu poate fi continuat. Acestea pot include probleme cu alocarea memoriei;

    E_AVERTISMENT. Codul va continua să funcționeze, dar va fi afișat un avertisment care indică faptul că există un fel de eroare, al cărei cod este indicat în mesaj. Nu este critic;

    E_NOTIZARE. Notificări care indică faptul că s-a întâmplat ceva care ar putea cauza o eroare. De asemenea, nu este critic pentru execuția codului;

    E_USER_ERROR. Erori generate de utilizator însuși;

    E_TOȚI. Aceasta include toate tipurile de erori. De obicei, această opțiune activat implicit la instalarea interpretului.

Cum să activați ieșirea erorilor în PHP

Metodologia de utilizare a mecanismelor de eroare în PHP poate varia în funcție de locul în care este folosit codul - pe găzduire sau pe calculator local. În cel de-al doilea caz, dezvoltatorul își poate configura serverul și afișa după bunul plac și anume, modifica configurația în fișierul php.ini. Este suficient să transformați două directive - display_errors și error_reporting în următoarea formă:

display_errors activat

error_reporting E_ALL

Aceste comenzi vă vor permite să afișați toate mesajele de eroare direct în fereastra browserului.

Dacă dezvoltarea se realizează pe gazduire virtuala, atunci cel mai adesea funcția de afișare a erorilor este dezactivată acolo din motive de securitate. Prin urmare, pentru a-l activa va trebui să utilizați fișierul de setări al serverului Apache htaccess. De obicei este situat la rădăcina site-ului. Trebuie să adăugați câteva rânduri utilizând orice editor de text:

php_flag display_errors activat

Raportarea erorii php_value -1

De asemenea, puteți afișa erorile direct din cod folosind funcția ini_set(). Cu toate acestea, merită luat în considerare faptul că, după finalizarea dezvoltării site-ului, utilizarea acestuia poate cauza probleme de securitate.

Scrieți la dosar

PHP vă permite să salvați toate erorile care apar într-o anumită locație de pe hard disk. Pentru a include rezultatul erorii PHP într-un fișier, puteți utiliza trei metode:

    editați fișierul php.ini. Aici trebuie să definiți două linii. Primul este log_errors = On, care activează de fapt opțiunea de ieșire. Al doilea este error_log = calea/la fișierul/dorit.

    Schimbați htaccess. De asemenea, puteți adăuga două linii. php_value log_errors „pornit” și calea/la fișierul php_value error_log.

    Utilizați funcția ini_set în locul dorit din cod.

Concluzie

Ieșire eroare în PHP - instrument necesarîn depanarea codului. Dar poate crea și zone potențial vulnerabile. Prin urmare, trebuie să utilizați acest mecanism cu atenție și atenție. După ce un site sau un serviciu a trecut toate etapele de testare, trebuie să vă asigurați că nu afișează erori care ar putea fi folosite de un atacator pentru a obține acces la date importante.

PHP este un limbaj de programare destul de liber, iar acesta, în opinia mea, este un mare minus. Principalul dezavantaj aici este că unele constructe care în alte limbi ar dezactiva imediat execuția programului, în PHP este norma și complet acceptabilă. Dar dacă doriți să scrieți codul corect de la bun început, atunci trebuie să știți despre cum să afișați erorile diferite niveluri .

ÎN PHP are mai multe niveluri de erori care sunt prezentate în tabelul de mai jos:

E_AVERTISMENT Diverse tipuri de avertismente. De exemplu, dacă o funcție necesită 3 parametru și doar treci 2 , atunci va exista doar o eroare de nivel E_AVERTISMENT.
E_NOTIZARE Cam la fel ca E_AVERTISMENT, dar acestea sunt erori foarte minore și pot provoca erori doar în viitor. Exemplu: Utilizarea unei variabile neinițializate. Pot să spun că acest nivel erori apar în aproape fiecare script mai mult sau mai puțin complex.
E_DEPRECATED Acest nivel de erori apare atunci când se utilizează constructe învechite, de exemplu, când se apelează o funcție veche.
E_PARSE Eroare de sintaxă. De exemplu, au uitat să pună o paranteză.
E_EROARE O eroare cu care suntem foarte familiarizați. De regulă, o vedem cel mai des. Cel mai simplu exemplu este apelarea unei funcții inexistente.
E_TOȚI Toate erorile.

Majoritatea serverelor afișează erori la nivel E_WARNING, E_PARSE și E_ERROR. Adică remarci foarte grosolane și erori fatale. Dacă doriți să programați profesional, atunci monitorizarea doar a unor astfel de erori nu este suficientă.

raportare_erori(E_ALL);
?>

Și acest lucru ar trebui scris înainte de începerea fiecărui scenariu. Dacă aceasta metoda este foarte incomod și aveți acces la php.ini, apoi în acest fișier găsiți directiva raportarea erorii si da-i o valoare E_TOȚI.

Daca esti cu emite acest nivel de erori în PHP scrie codul fără un singur comentariu, atunci înseamnă că ai creat, cel puțin, un produs bun. Când îl încarci pe hosting, îți recomand să ștergi acest nivel de erori pentru a nu apărea din când în când. La urma urmelor PHP este, de asemenea, în curs de actualizare, iar noile modele de astăzi pot deveni învechite mâine. Și pentru a nu provoca o eroare de nivel E_DEPRECATED, recomand dezactivarea afișajului unor astfel de erori.

Când depanați scripturile în PHP, este obișnuit să obțineți un „ecran alb” în browser. Ceea ce în majoritatea cazurilor indică o oprire Execuție PHP cod din cauza unei erori. Interpretul PHP vă permite să afișați informații de serviciu despre erori pe ecran, ceea ce facilitează foarte mult depanarea. Dar implicit (în majoritatea cazurilor), acest comportament este dezactivat din motive de securitate, adică mesajele de eroare PHP nu sunt afișate pe ecran.

În acest articol vă voi spune cum să faceți ca PHP să afișeze mesaje de eroare pe ecranul monitorului într-o fereastră de browser. Instrucțiunile sunt valabile pentru cazul în care utilizați web-ul server Apacheși dacă PHP pentru site-ul dvs. este conectat ca un modul Apache.

Afișarea erorilor pe ecran ar trebui să fie activată numai la depanarea site-ului. Prezența unui astfel de cod poate afecta negativ securitatea aplicației web.

Permiterea afișării erorilor PHP pe ecran folosind fișierul .htaccess

Aceasta este foarte mod convenabil pentru depanarea codului PHP. Funcționează în aproape toate cazurile. În folderul cu scriptul de pe site plasăm fișierul .htaccess cu următorul conținut:

Php_flag display_errors pe php_flag display_startup_errors pe php_flag error_reporting E_ALL

  • display_errors- include o opțiune de afișare a erorilor pe ecran împreună cu restul codului.
  • display_startup_errors- activează opțiunea de a afișa erorile care apar atunci când PHP pornește când directiva display_errors nu funcționează încă.
  • raportarea erorii- indică ce erori sunt afișate după nivelul de semnificație. Când directiva este setată la E_TOȚI sunt afișate toate erorile.

Activați ieșirea erorii PHP pe ecran în codul fișierului PHP

Această metodă este convenabilă deoarece controlați afișarea erorilor pe ecran în scriptul PHP însuși. Parametrii setați folosind funcția ini_set() au mai mulți prioritate ridicatăși anulează directivele php.iniȘi .htaccess. Introdu următorul cod începutul PHP fişier:

Ini_set("erori_afișare", 1); ini_set("display_startup_errors", 1); ini_set("raportare_eroare", E_ALL);

Activați ca erorile PHP să fie afișate pe ecran folosind fișierul php.ini

Această metodă este relevantă atunci când sunteți administrator de server. În dosar php.ini Editați | × următoarele rânduri(adăugați dacă este necesar):

Display_errors = On display_startup_errors = On error_reporting = E_ALL

Cel mai bun mod de a afișa erori PHP pe ecran

În opinia mea la utilizatorul mediu cel mai convenabil de utilizat .htaccess, mai ales dacă aveți mai multe fișiere PHP. Metoda nr. 2 este convenabilă pentru depanarea uneia fișier php pentru a nu afecta nivelul de ieșire de eroare pentru alții scripturi php. Opțiune cu php.ini Potrivit numai pentru administratorii de server, dar efectul său se aplică tuturor site-urilor situate pe acest server.

Mulțumiri

Următoarele surse au fost folosite la scrierea acestui articol.


Să ne dăm seama cum să activăm/dezactivăm afișarea erorilor pe site. Prin panoul de administrare și prin fișierul htaccess.

Afișarea erorilor (Notificare, Avertizare, Eroare fatală) este importantă și funcția necesară, ce bine că există! În caz contrar, webmasterii ar petrece luni întregi căutând manual erori în codul site-ului lor.

Cum se activează afișarea erorilor din panoul de administrare Joomla 3?

Pentru a face acest lucru, în panoul de administrare Joomla, accesați „Sistem - Setări generale”.

Accesați fila „Server”, acolo veți vedea opțiunea „Mesaje de eroare”. Selectați modul „Maximum”.

Salva.

După aceasta, mesajele de eroare, dacă există, vor apărea pe paginile site-ului. Acest lucru este util dacă obțineți un ecran alb undeva pe site.

După ce ați activat mesajele de eroare să apară pe un ecran alb, veți vedea tipul de eroare și descrierea acesteia.
Folosind această descriere, puteți găsi o soluție într-o căutare Yandex sau Google.

Activarea afișării erorii php prin configuration.php

Dacă nu aveți acces la panoul de administrare sau nu funcționează, puteți activa afișarea erorilor prin fișierul configuration.php, care se află în folderul rădăcină al site-ului dvs.

Conține o directivă

public $error_reporting = "implicit";

Pentru a activa afișarea erorilor, modificați implicit la maxim

Cum să activați afișarea erorilor prin .htaccess

Dacă nu aveți Joomla, ci propriul script, sau din anumite motive nu puteți activa mesajele de eroare în primele două moduri, atunci acest lucru se poate face prin fișierul .htaccess, care se află și în folderul rădăcină al site-ului dvs.

Deschideți .htaccess - acordați atenție punctului din față. Dacă nu aveți un astfel de fișier, atunci creați-l.
ÎN sisteme CMS de obicei se numește htaccess.txt și poate fi pur și simplu redenumit în .htaccess

În partea de sus, adăugați linia:

php_flag display_errors activat

Și linia:

php_flag display_errors dezactivat

dezactivează afișarea erorilor.

Ce fel de mesaje de eroare PHP există?

Cele mai frecvente sunt:

Înștiințare- notificarea erorilor minore din cod. De obicei, funcționalitatea site-ului rămâne intactă.

Aceste notificări apar doar în antet.

Avertizare- avertizare despre erori mai grave. Uneori, cu o astfel de avertizare, rămâne și funcționalitatea site-ului, uneori un ecran alb.