Hibaüzenetek (debug level) szabályozása a .htaccess fájlban

A W3HOST wiki wikiből

Hibaüzenetek (debug level) szabályozása

Miért lehet erre szükségem?

A W3HOST webtárhelyein a web oldalak futásából eredő esetleges hibaüzenetek egy fájlban kerülnek tárolásra. Ezt FTP kapcsolaton keresztül lehet letölteni és tartalmát megvizsgálni. Biztonsági okokból a weboldalon történő hiba kiírása nincs bekapcsolva, azaz a látogató ezeket nem láthatja. Ez fontos, mert így a weboldal feltörése is nehezebb, hisz a hibaüzenetek nagyszerű alapot adhatnak egy esetleges külső támadásnak.

Főleg a PHP 5.3.x megjelenésével a logfájlok tartalma megtelhet Deprecated figyelmeztető sorokkal. Pl.:

[16-Oct-2012 11:30:54] PHP Deprecated:  Function ereg() is deprecated in 
/home/xyzxyz/public_html/xyzxyz/blabla/lib/w3host.php on line 587
[16-Oct-2012 11:30:54] PHP Deprecated:  Function ereg() is deprecated in 
/home/xyzxyz/public_html/xyzxyz/blabla/lib/w3host.php on line 587

A súlyosabb hiba megtalálását ezek a sorok igencsak megnehezíthetik.


Hogyan szüntethető meg a Deprecated hibaüzenetek?

  • Szabályos módja a deprecated függvény helyettesítésének megkeresése a [php.net] oldalon, és a forráskód kijavítása. Így a későbbi php verzókkal is kompatibilis lesz kódunk.
  • Ha az előző pontra nincs lehetőségünk, átmeneti megoldás lehet ezen hibaüzenetek kikapcsolása a PHP naplózási viselkedésének szabályozásával.


PHP naplózási viselkedésének szabályozása

A php naplózási viselkedése a következő oldalon tekinthető meg: PHP errors and Logging

A linken található oldal alapján a következőre lesz szükségünk:

E_ALL & ~E_NOTICE & ~E_DEPRECATED

A .htaccess fájlba a fenti definíció numerikus megfelelője szükséges. Ez kiszámítható a táblázat alapján, de sokkal egyszerűbb egy php szkript segítségével kiiratni:

<?php
echo E_ALL & ~E_NOTICE & ~E_DEPRECATED
?>

Ennek ereménye: 24567

Tehát a következő sort kell elhelyezni a .htaccess fájlban:

php_value error_reporting 22519