Tanulás php
Mit tud segíteni a PHP a szkriptek hibakeresésénél?
De a gyakorlat azt mutatja, hogy a fejlesztők számára a rendszergazdák számos paraméter átfogalmazását biztosítják.
Mi a teendő, ha van egy fehér lapja ahelyett, hogy először engedélyezzük a hiba leképezést: a következő sorokat kell hozzáadni a szkript kezdetéhez, amelyhez hibakeresés szükséges.
Megjegyzés. a megközelítés a teljes kritikus hibák teljes lekérdezéséhez akkor is lényeges, ha a PHP-verzió hibakeresése egyenlő vagy nagyobb, mint 5.2. Ellenkező esetben fordítson figyelmet erre a cikkre.
Elemezzük a fenti PHP kódot:
(string) ini_set ($ server_var_name, $ server_var_value) - a $ server_var_value értéke $ server_var_name PHP futtató változójának értéke. sikeres hozzárendelés esetén a változó értékét adja vissza, egyébként false értéket ad vissza.
Először bekapcsoljuk az ini_set ("display_errors", 1) hibajelentést.
Ezt követően beállítjuk az értéket a "error_reporting", E_ALL hibák megjelenítéséhez
E_NOTICE. egyenlő az összes hiba megjelenítésével, de E_NOTICE utasítások nélkül.
Ezután újra definiáljuk a hiba kimenetét a ini_set ("error_log", "") látogató standard böngészőfolyamában; .
Minden rendben lenne, de vannak olyan kritikus hibák, amelyek a tolmács működéséhez kapcsolódnak, ami megszakíthatja a parancsfájl működését, és nem fog megjelenni a látogató böngészőfonalán. Ez a mi rejtélyes PHP.
De jó, mióta az 5.2-es verzió (kb. Csoda!), Még a php 4-ben deklarált, a függvény - az interceptor register_shutdown_function keresett!
A register_shutdown_function függvény leírása:
(void) register_shutdown_function (visszahívás $ függvény) - a $ függvény nevét veszi fel. amely a kód végrehajtása után is végrehajtásra kerül, még akkor is, ha a forgatókönyv megszakításával egy kritikus hiba lép fel.
Határozza meg a errPrint függvényt. amely kinyomtatja az utolsó hibát print_r (error_get_last ()) a szkript befejezése után. És adja meg a funkció nevét a register_shutdown_function kezelőnek:
A funkció leírása error_get_last:
(tömb) error_get_last (void) - visszaad egy tömb információt az utolsó hibáról. A tömb kulcsait tartalmazó „típus” - típusú hiba „üzenet” - részletes hibaüzenet, „file” - a fájl elérési útvonalát, amelyben a hiba történt, a „vonal” - a sor számát, ahol a hiba történt, és a karakterek számát.
És a mi esetünkben az utolsó "történt" hiba - és ez az, ami a parancsfájl végrehajtásának megállításához vezet.
Ennek a megközelítésnek köszönhetően lehetővé válik a szó szoros értelmében "elkapni" a hibákat és részletes információkat kapni róla.
Ne felejtse el kikapcsolni a hibabejelentéseket a felhasználó böngészőjében!
De miután a php-parancsfájl hibakeresése és a kritikus hiba javítása után történt, ne felejtse el teljes mértékben letiltani a felhasználó böngészőjében lévő hibák kimenetével kapcsolatos információkat. Ez egyrészt a biztonsági aggályok (sok hibák és figyelmeztetések állnak rendelkezésre a támadók bizalmas információkat, mint például: az abszolút útvonalat a szerveren, hogy a szkriptek, azok helyét, stb), és szintén zavarja a normál inicializálás ülések és a munka funkciók, a fejléc fejlécét, és esztétikai szempontból nem kell sok homályos információt megjeleníteni a webhely látogatójának böngészőjében. Ehhez teljesen elnyomhatja a hiba kimenetét. Alternatív megoldásként az ini_set függvény ("error_log", "az íráshoz rendelkezésre álló hiba fájl elérési útja") újradefiniálhatja a hiba kimenetét egy fájlba; Kívánatos, hogy ez a fájl a webhelyen található mappákon kívül helyezkedjen el, vagy a fájlhoz való hozzáférés kívülről teljesen korlátozott volt.
Itt található a hibák teljes eltörlésének kódja:
Továbbá olyan funkciók esetében is, amelyek még mindig hibákat és figyelmeztetéseket generálnak, használhatja a hibaelhárító operátort. Ehhez csak adja meg a függvény nevét: @. például:
Bár erősen ajánlom, hogy ahelyett, hogy ezt a "lusta" módszert használja, feltételes kijelentéseket használ minden olyan helyzet kezelésére, amely a hiba megjelenéséhez vezet. Ez növeli a stabilitást és növeli a forgatókönyvek "biztonsági margóját" a vészhelyzetek alatt, és kevésbé "teret ad a betolakodóknak".
Emlékezni. gondos és szorgalmas fejlesztése oldalak ára az Ön hírnevét!
Még mindig látok egy fehér oldalt!
Több oka lehet:
Ez a megközelítés egyetemes a php 5.2 vagy újabb verzióhoz. Annak érdekében, hogy megtudja a PHP-tolmács verzióját, add hozzá phpinfo () -ot a scripthez;
Az első sorok leírják a PHP verzióját.
Ha a php verziója kisebb, mint 5,2:
A php korábbi verzióihoz Dmitry Koterov rugalmas megoldást fejlesztett ki a kritikus hibák leküzdésére, amellyel itt látható
Ha a PHP verziója magasabb, mint 5,2, de mindegy fehér oldal továbbra is megjelenik a beállított hibakimenete, akkor a script automatikusan megszűnik a szerver (túllépi a források a CPU idő nem dolgozza fel a kritikus helyzetben lévő egyik PHP könyvtárak, stb.) Ebben az esetben azt javasoljuk, hogy lépjen kapcsolatba a házalóhellyel a hibák naplózása és a betöltés érdekében.
De ha nem talál semmit alkalmasak a naplók által nyújtott hosting cég - a legvégső: egy léptető erőltetett stop funkció exit vagy meghalni „problémás területek”, és felsorolja a szükséges információkat, hogy felfedezzék a „instabil kód”, és átírni tekintettel a terhelés .
Íme egy példa lépésről-lépésre történő hibakeresésre egy egyszerű államjelzővel:
Ha fehérfóliát látott a "add_user_avatar" függvény vége előtt, akkor a probléma pontosan az add_user_avatar függvény végrehajtása során fog kinézni. Ha nem, akkor a "die" vagy az "exit" függvényt "mozgatjuk", a hívást és a következő funkciók hasonló módon történő elvégzését jelöljük.
A webes technológiákkal kapcsolatos további információk megtalálhatók az összes webhelyen található cikklistán: