Тупаров даде добра идея преди да направим тема за грешките и "не грешките". Та реших да бъда полезен като аз я създам.
Моля да бъде прегледана от модераторите, променена и дори изтрита, ако сметнат, че е прекалено объркваща и трудна за разбиране!Показването на грешките/предупрежденията може да бъде променяно във файла php.ini, който съдържа всички настройки на Php или чрез създаване на отделен php.ini (използва се при някои хост компании (имам опит с host.bg - те го правят по този начин)).
error_reporting().
Ще разгледам няколко конкретни примера от други теми:Notice: Undefined index: is_logged in C:\Program Files\EasyPHP-5.3.6.0\www\mcf\functions.php on line 22
Notice: Undefined variable: error_array in C:\Program Files\EasyPHP-5.3.6.0\www\mcf\register.php on line 27
Това не са грешки! В този пример имаме недефиниран индекс и недефинирана променлива.
Дори да бяха дефинирани, действието на кода нямаше да се промени! В php не е нужна дефиницията на променливи, за да бъдат използвани. Ако пишехме C++ или някои друг подобен език, нашето приложение въобще нямаше да се компилира/стартира/покаже.
Сега ще си кажете, е добре - щом няма проблем с това дали е дефинирана или не, по-добре да го изключа за да не ми пречи.
Да, ама не! Точно тези предупреждения могат да бъдат много полезни. Пример: Имаме заявка към База Данни с потребители, присвоили сме информацията в масив и се опитваме да достъпим информацията по дадем ключ, примерно ключа ни е истинското име на потребителя - "
real_name". Обаче в бързината или каквато и да е причина, ние пишем "
realname". Да кода ще работи, но няма да видим как се казва потребителя. И вместо да се лутаме къде е грешката, веднага ще се покаже notice, че такова животно като "
realname" - няма. И в крайна сметка, ако толкова ви дразнят - ми дефинирайте ги, така няма да ви вадят очите!
Deprecated
: Function ereg() is deprecated in C
:\Program Files\EasyPHP
-5
.3
.6
.0\www\mcf\register
.php on line
36
Това не е грешка!Времената се менят, тенденциите също и някои от функциите на php се премахват. Но за наша радост препоръчват използването на други, така че просто потърсете в сайта на php за конкретната функция и веднага ще видите голям червен балон, предупреждащ да не се използва, и малко по-надолу предложения какво да използваме.
Warning
: mysql_fetch_assoc() expects parameter
1 to be resource
, boolean given in C
:\Program Files\EasyPHP
-5
.3
.6
.0\www\mcf\register
.php on line
54
Това също не е грешка! Кода не работи както трябва,
но ще се изпълни преди и след предупреждението. Няма да влизам в подробностти какъв е причинителя на грешката, но е със сигурност нещо с базата данни, въобще щом е mysql_нещо_си (pg_нещо_си) - погледнете си кода по заявките!
Fatal error: Call to undefined function db_init() in E:\xampp\htdocs\zzz\index.php on line 3
Това вече е грешка! Кодът няма да се изпълни след показването на грешката.Parse error: syntax error, unexpected '}' in E:\xampp\htdocs\zzz\index.php on line 3
Това е грешка! Кодът не се изпълнява. Имаме пропусната отваряща/затваряща скоба.
Това са най-честите съобщения за предупреждения/грешки. Препоръчвам ви да оставите всички errors/notices/warnings включени, въпреки че по подразбиране са изключени, може да си спестите малко нерви, тях за жалост никой не може да ни ги плати.
E_ALL | E_STRICT (Show all errors, warnings and notices including coding standards.)