Чи можна в PHP відключити помилки і коли це потрібно робити

2

Від автора: за свої помилки треба відповідати! Їх потрібно виправляти! Але ж можна виправити як-небудь потім, коли буде час? У справжньому житті таке не завжди можливо, а на своєму сайті для цього потрібно лише в PHP відключити помилки.

Навіщо ховати свої програмні «недоліки»?

Тут, однак, «попахує» філософією, панове розробники! А програмування і філософія – це далеко йдуть один від одного дисципліни. Зрозуміло, що якщо приховати свої баги в коді, тоді буде не так соромно. І ніхто не дізнається, що ви тільки програміст-початківець :) .

У програмуванні бажання прибрати помилки PHP не завжди говорить про непорядність веб-розробника. А швидше навпаки: таким чином він намагається убезпечити систему працюючого ресурсу від злому і «не напружувати» користувачів відображенням повідомлень про існуючі «недуги» в коді сайту.

Висновок помилок вітається і затребуваний тільки на етапі «зародження» нового ресурсу. При його створенні кожен з модулів движка повинен пройти скрупульозну стадію тестування. І все для того, щоб потім коректно працювати у складі всієї системи.

З допомогою повідомлень, видаваних ядром мови, розробник дізнається про існуючу проблему. Додатково кожне повідомлення про помилку супроводжується коротким поясненням характеру її походження. Що дозволяє розробнику якомога швидше виправити допущений «прокол».

Відображення системних повідомлень не тільки псує враження користувачів ресурсу, але і робить його дуже вразливим. Ось чому так важливо вимикати показ помилок в PHP на працюючому сайті.

Приклад уразливості

На наступному прикладі я спробую довести вам, що афішувати свої програмні помилки не завжди безпечно. Припустимо, що сайт працює на якомусь движку, написаному за допомогою MySQL і PHP. В одному з скриптів невиспаний кодер неправильно прописав пароль у рядку підключення.

Після запуску скрипта на сайті, всі користувачі побачать на екрані опис даної помилки. А хакер – отримає логін користувача без всякого злому, «шуму і пилу». Гляньте на наступний скріншот:

Закриваємо діру

У коді таку серйозну дірку можна «закрити» за допомогою «собаки». Точніше, символу «@». Приклад:

@$load= mysqli_connect(‘localhost’, ‘root’, ‘321’, ‘site’);

Або за допомогою функції error_reporting(), передавши їй значення 0.

У першому варіанті (з «собачкою») ми відключаємо відображення помилки, допущеної в одному рядку. У другому – забороняємо висновок повідомлень для всього коду скрипта.

Через файли конфігурації

Крім цього відключити помилки PHP можна в htaccess. Даний файл містить в собі налаштування веб-сервера Apache. Щоб системні повідомлення про «баги» не з’являлися на сторінках ресурсу, в цей фал слід додати наступні рядки:

php_flag display_errors on
php_value error_reporting 0

Виходить, що таким чином ми не впливаємо на окремо взятий скрипт, а на весь код системи в цілому. Але це не єдиний спосіб глобального впливу. Якщо ви використовуєте Денвер, тоді в ньому мова програмування працює в режимі шлюзу (CGI). У такому випадку потрібно відключати помилки в PHP, ini. Знайдіть у файлі наступний рядок і змініть значення директиви на off.

Ну, начебто розібралися, як і коли в PHP потрібно «відключати» свою совість і забороняти відображення повідомлень про помилки. Причому в деяких випадках це не тільки можна робити, але і потрібно.