Învățarea php

Ce ne poate ajuta PHP cu script-urile de depanare?

Dar, după cum arată practica, pentru dezvoltatori, administratorii prevăd redefinirea multor parametri.







Ce trebuie să faceți atunci când aveți o foaie albă în loc de site, mai întâi să permitem maparea erorilor: adăugați următoarele rânduri la începutul scriptului, care necesită depanare.

Notă. abordarea este relevantă pentru o interceptare completă a erorilor critice chiar și atunci când depanarea în versiunea PHP este egală cu sau mai mare decât 5.2. În caz contrar, acordați atenție acestei părți a articolului.

Să analizăm codul PHP de mai sus:

(string) ini_set ($ server_var_name, $ server_var_value) - seteaza valoarea $ server_var_value pentru variabila runtime PHP $ server_var_name. în cazul unei cesiuni reușite, returnează valoarea variabilei, în caz contrar returnează falsul.

Mai întâi pornim afișarea de eroare ini_set ("display_errors", 1).

După aceea, setăm valoarea pentru afișarea erorilor "error_reporting", E_ALL

E_NOTICE. egal cu afișarea tuturor erorilor, dar fără instrucțiuni E_NOTICE.

Apoi, redefinim rezultatul erorilor din fluxul de browser standard al vizitatorului ini_set ("error_log", ""); .

Totul ar fi bine, dar există anumite erori critice legate de funcționarea interpretului în sine, care poate provoca o întrerupere a funcționării script-ului și nu va fi transmisă thread-ului browser-ului vizitatorului. Acesta este PHP nostru criptic.

Dar, bine, de la versiunea 5.2 (despre un miracol!), Declarat încă în php 4, funcția - interceptor register_shutdown_function a câștigat!

Descrierea funcției register_shutdown_function:

(void) register_shutdown_function (funcția callback $) - ia numele funcției funcției $. care se execută după executarea codului, chiar și în timpul apariției unei erori critice cu întreruperea scriptului.

Definiți funcția errPrint. care imprimă ultima eroare print_r (error_get_last ()) după terminarea scriptului. Și dați numele acestei funcții la funcția register_shutdown_function:

Descrierea funcției error_get_last:

(array) error_get_last (void) - returnează o serie de informații despre ultima eroare care a apărut. Matricea conține cheile "tip" - tipul de eroare, "mesaj" - mesajul de eroare detaliat, "file" - calea spre fișierul în care a apărut eroarea, "line" - numărul liniei în care a apărut eroarea și numărul simbolului.







Și în cazul nostru, ultima eroare "sa întâmplat" - și aceasta este cea care duce la oprirea executării scenariului.

Datorită acestei abordări, va fi posibil să "capturați" literalmente orice eroare și să obțineți informații detaliate despre aceasta.

Nu uitați să dezactivați informațiile de eroare în browserul utilizatorului!

Dar, după depanare script php și de a elimina eroarea critică, nu uitați să dezactivați informații complete privind retragerea erorilor în browser-ul utilizatorului. Acest lucru se datorează atât preocupărilor de securitate (mai multe erori și avertismente sunt disponibile pentru un atacator la informații confidențiale, cum ar fi: calea absolută de pe server pentru a script-uri, locația lor, etc.) și pot de asemenea interfera cu sesiuni de inițializare și funcții de lucru normale, antete transmit antet, cât și din punct de vedere estetic nu este necesar pentru a afișa o mulțime de informații obscure în browser-ul vizitatorului pe site-ul tau. Pentru a face acest lucru, puteți suprima complet rezultatul erorilor. Sau suprascrie de ieșire de eroare într-un fișier folosind ini_set ( „error_log“, „calea către fișierul scriptic de eroare“);. În acest caz, este de dorit ca dosarele de fișiere a fost în afara site-ului dvs., sau accesați fișierul din exterior a fost complet restricționat.

Iată codul pentru suprimarea completă a erorilor:

De asemenea, pentru unele funcții care generează în continuare erori și avertismente, puteți utiliza operatorul de suprimare a erorilor. Pentru aceasta, specificați numele funcției: @. de exemplu:

Cu toate acestea, vă recomandăm cu insistență să utilizați în locul acestei metode "leneș" declarații condiționate pentru a procesa toate situațiile care duc la apariția acestei erori. Acest lucru va adăuga stabilitate și va spori "marja de siguranță" a scripturilor dvs. în situațiile de urgență și va lăsa mai puține "motive de reflecție" pentru intruși.

Amintiți-vă. dezvoltarea atentă și scrupuloasă a site-urilor prețul reputației dvs.!

Încă văd o pagină albă!

Pot exista mai multe motive:

Această abordare este universală pentru php 5.2 și mai mare. Pentru a afla versiunea interpretului dvs. PHP, adăugați phpinfo () la scenariul dvs.;

Primele linii vor descrie versiunea PHP.

Dacă versiunea php este mai mică de 5,2:

Pentru versiunile anterioare de php, Dmitry Koterov a dezvoltat o soluție flexibilă pentru a intercepta erori critice, cu care puteți vedea aici

Dacă aveți versiunea PHP mai mare de 5,2, dar toate aceeași pagină albă continuă să apară cu eroare de ieșire ajustată, apoi script-ul dvs. se termină automat serverul (depășiți resursele timpului, procesorul nu este procesat de situația critică într-una dintre bibliotecile PHP, etc). În acest caz, vă sfătuiesc să consultați furnizorul dvs. de găzduire pentru furnizarea de bușteni de eroare și sarcina.

Dar dacă nu poți găsi ceva util în jurnalele furnizate de compania de găzduire - ultimă instanță: un singur pas cu pas printr-o ieșire funcție de oprire forțată sau mor în „zonele cu probleme“ și enumeră informațiile de care aveți nevoie pentru a descoperi „cod instabil“, și rescrie-l în vedere la sarcina .

Iată un exemplu de efectuare a depanării pas cu pas cu un set simplu de steaguri de stat:

Dacă ați văzut o foaie albă înainte de afișarea "sfârșitul funcției add_user_avatar", atunci problema este să se uite exact în timpul executării acestei funcții add_user_avatar. Dacă nu, noi "mișcăm" funcția de mor sau ieșire de mai jos, indicând apelul și completarea următoarelor funcții într-un mod similar.

Mai multe informații despre tehnologiile web pot fi găsite în lista noastră cu toate articolele de pe site:







Articole similare

Trimiteți-le prietenilor: