Hlásenie chýb

Konfiguračné zmeny

V PHP 3 bola úroveň hlásenia chýb nastavená ako jednoduchá číselná hodnota vytvorená sčítaním čísel , ktoré súvisia s rôznymi úrovňami chýb . Bežnými hodnotami boli 15 pre hlásenie všetkých chýb a upozornení alebo 7 pre hlásenie všetkého ako varovné správy a podobné veci .

PHP 4 väčšiu sadu úrovní chýb a upozornení a prichádza s konfiguračným parserom , ktorý dovoľuje použitie symbolických konštánt pre nastavovanie plánovaného správania .

Úroveň hlásenia chýb by sa teraz mala konfigurovať výlučne odobratím úrovní upozornenia , ktoré nechcete , aby generovali chybové hlásenia x-oringovaním zo symbilickej konštanty E_ALL . Znie to zložito ? Teda , povedzme , že chcete,aby systém hlásenia chýb hlásil všetko , okrem jednoduchých štýlových upozornení , ktoré kategorizované symbolickou konštantou E_NOTICE . Potom vložíte následovné do vášho php.ini : error_reporting = E_ALL ~ ( E_NOTICE ) . Ak chcete tiež zakázať upozornenia , pridajte vhodnú konštantu do zátvoriek binárne alebo pomocou operátora ' |' : error_reporting= E_ALL ~ ( E_NOTICE | E_WARNING ) .

Varovanie

Keď upgradujete kód alebo servery z PHP 3 na PHP 4 mali by ste si overiť tieto nastavenia a volania na error_reporting( ) lebo môžte zkázať oznamovanie nových typov chýb , hlavne E_COMPILE_ERROR . Toto môže viesť k prázdnym dokumentom bez žiadnej spätnej väzby na to , čo sa stalo alebo kde hľadať príčinu problému .

Používanie starých hodnôt 7 a 15 pre nastavovanie hlásenia chýb je veľmi zlý nápad , nakoľko toto odstavuje niektoré novo pridané triedy chýb vrátane chýb analýzy . Toto môže viesť k veľmi divnému správaniu , pretože skript by mohol pracovať bez zobrazovania chybových hlásení .

Toto v minulosti viedlo k veľkému množstvu nereprodukovateľných chybových hlásení , kde ľudia hlásili problémy so skriptovým enginom , ktoré nevedeli vystopovať , keď boli TRUE , príčinou zvyčajne bola chýbajúca ' } ' vo vyžadovanom súbore , ktorú parser nevedel hlásiť kvôli zlej konfigurácii systému hlásenia chýb .

Takže kontrola nastavenia hlásenia chýb je prvá vec , ktorá by sa mala urobiť vždy , keď sa vaše skripty nečinne zaseknú . Zend Engine sa dnes posudzovať ako dostatočne vypracovaný , aby nespôsobil tento druh zláštneho správania .

Dodatočné výstražné hlásenia

Veľa existujúceho PHP 3 kódu využíva jazkové konštrukcie , čo by sa malo posudzovať za veľmi zlý štýl , pretože tento kód , počas určenej úlohy , môže zlyhať kvôli zmenám na iných miestach . PHP 4 vyrába veľa výstražných správ v situáciách , v ktorých PHP 3 nie . sa to jednoducho opraviť vypnutím E_NOTICE správ , ale namiesto toho je lepšie kód opraviť .

Najbežnejší prípad , ktorý bude teraz vyrábať výstražné správy , je použitie reťazcových konštánt bez apostrofov ako indexov polí . PHP 3 a 4 ich bude interpretovať ako reťazce ak pod takým menom nie známe žiadne kľúčové slová alebo konštanty , ale kedykoľvek bola pod takým menom definovaná konštanta , môže sa váš skript kdekoľvek v kóde prerušiť . Toto sa môže dokonca stať rizikom nebezpečia ak nejaký votrelec predefinuje reťazcové konštanty spôsobom , ktorým mu váš skript dáva prístupové práva , ktoré nemal mať . Takže PHP 4 vás teraz bude varovať vždy , keď použijete reťazcové konštanty bez apostrofov ako napríklad v $_SERVER[ REQUEST_METHOD ] . Jeho zmena na $_SERVER[ 'REQUEST_METHOD' ] 'uteší ' parser a významne zlepší štýl a bezpečnosť vášho kódu .

Ďalšia vec , o ktorej vám PHP 4 povie , je použitie neinicializovaných premenných alebo elementov polí .