nmk

Лекція 18 (2 години). Тестування, дебагінг та розгортання

План лекції

  1. Дебагінг у PHP: як шукати власні баги та читати логи.
  2. Функції var_dump() та print_r(). Відображення помилок на екрані.
  3. Що таке Хостинг і Домен? Огляд популярних варіантів.
  4. Розгортання (Deployment) проєкту: перенесення файлів та бази даних на реальний сервер.

Перелік умовних скорочень

Вступ

Ми пройшли довгий шлях від echo "Hello World" до повноцінного MVC-застосунку з базою даних, хешуванням паролів та сесіями. Але поки ваш сайт лежить у папці C:\xampp\htdocs\, його можете бачити лише ви. Сайти створюються для того, щоб ними користувався весь світ! У цій, фінальній лекції курсу, ми навчимось “виловлювати” останні баги в коді (Дебагінг) та здійснимо довгоочікуване Розгортання (Deployment) — перенесемо ваш “Менеджер завдань” на реальний сервер в Інтернеті.


1. Дебагінг: Мистецтво пошуку власних помилок

Програмування на 20% складається з написання коду і на 80% — з пошуку опечаток у ньому. Коли ваш код видає “Білий екран смерті” або База Даних чомусь не зберігає завдання, новачки часто впадають у паніку. Досвідчений інженер робить дебагінг.

Вмикання показу помилок (Тільки для розробки!)

За замовчуванням багато серверів налаштовані так, щоб приховувати помилки безпеки (щоб хакер не побачив шляхи до файлів). Щоб змусити PHP говорити вам, де саме помилка, додайте ці два рядки на самий початок вашого index.php:

<?php
// ТИМЧАСОВО змушуємо PHP малювати всі помилки прямо на екран
ini_set('display_errors', 1);
error_reporting(E_ALL);

// Далі вже йде підключення до бази чи сесії...
?>

Увага: Перед тим як заливати сайт на реальний (Production) сервер, ці два рядки обов’язково треба видалити (або закоментувати).

Журнали помилок (Error Logs)

Якщо сайт видає “Помилку 500”, а екран повністю білий і нічого не показує — загляньте в панель вашого XAMPP. Для модуля Apache є кнопка Logs -> Apache (error.log). Відкрийте цей текстовий файл, прокрутіть в самий низ — там буде чітко написано, на якому рядку якого файлу ви забули поставити крапку з комою.

2. Головні інструменти дебагера: var_dump та die

Уявіть ситуацію: користувач тисне “Залогуватися”, але його не пускає. Ви не знаєте, проблема у формі, у базі, чи у паролі. Ваша найголовніша зброя — це зупинити код і “зазирнути” всередину змінних.

В PHP для цього є 2 функції:

<?php
// Ми ловимо дані з форми. ЗУПИНІТЬСЯ І ПЕРЕВІРТЕ!
$email = $_POST['email'];

echo "<pre>"; // Робить вивід var_dump красивим і структурованим (як в консолі)
var_dump($_POST); // Що ВЗАГАЛІ прилетіло з форми?
echo "</pre>";

die(); // Команда "Вмри". Миттєво зупиняє виконання всього коду нижче.
// Це не дасть спрацювати SQL-запиту чи редиректу. Ви просто побачите масив на екрані і все.
?>

Якщо var_dump($_POST) порожній — винна HTML-форма (можливо забули атрибут name=""). Якщо там є дані — форма працює, проблема у SQL-запиті. Такий послідовний підхід і є “Дебагінгом”.

3. Що таке Хостинг і Домен?

Після тестування і дебагінгу на localhost, настає час переїзду на “Продакшн” (Production).

4. Розгортання (Deployment) проєкту

Щоб “перенести” сайт з вашого комп’ютера на сервер хостингу, вам потрібно виконати два паралельні процеси: Перенести Файли і Перенести Дані.

Етап 1: Перенесення Бази Даних (Експорт -> Імпорт)

Ваша локальна база task_manager не може просто так перелетіти через інтернет. Її треба “запакувати”.

  1. Відкриваєте свій локальний phpMyAdmin.
  2. Обираєте зліва базу task_manager.
  3. Натискаєте вгорі вкладку Експорт (Export) -> формат SQL -> “Вперед”. Ви отримаєте файл task_manager.sql. Це звичайний текстовий файл, у якому прописані всі команди (CREATE TABLE..., INSERT...).
  4. Йдете на сайт вашого Хостингу у панель керування. Створюєте там нову пусту Базу Даних і запам’ятовуєте її нове Ім’я, Логін і Пароль!
  5. Заходите у phpMyAdmin вже НА ХОСТИНГУ. Відкриваєте нову створену базу і натискаєте вгорі Імпорт (Import) -> завантажуєте ваш .sql файл. Усі таблиці відновлені!

Етап 2: Перенесення Файлів (.php)

Для передачі десятків файлів коду використовується спеціальна програма — FTP Клієнт (наприклад, FileZilla).

  1. У панелі Хостингу шукаєте “FTP доступи” (сервер, логін, пароль). Вводите їх у FileZilla.
  2. Ви підключаєтесь. Зліва у FileZilla — ваш комп’ютер, справа — сервер хостингу.
  3. Копіюєте всю папку вашого проєкту (всі .php файли) зліва вправо у директорію public_html (або www / htdocs), яка є “коренем” сайту на хостингу.

Етап 3: Оновлення Конфігурації (Критично!)

Ваш сайт на хостингу не запрацює. Він видасть помилку “Access Denied”. Чому? Бо у вашому файлі db.php прописано: new PDO('mysql:host=localhost', 'root', ''). Але на реальному сервері хостингу база даних має захищений пароль, а інколи й інший хост! Вам необхідно через FileZilla:

  1. Клікнути правою кнопкою на db.php -> Редагувати.
  2. Вписати ТІ нові логін і пароль від бази, що ви отримали на етапі 1.
  3. Зберегти.

Вітаємо! Ваш перший MVC PHP застосунок офіційно доступний для всього світу!


Висновки

  1. Професійний підхід до виправлення помилок (Дебагінг) розмежовує фази пошуку: від включення “Принту помилок” (display_errors) до читання Системних Логів (error.log) сервера для ідентифікації прихованих фатальних зупинок системи.
  2. Зупинка виконання скрипта за допомогою директиви die(); в парі з переглядом сирих масивів var_dump($_POST); є базовою навичкою покрокового тестування потоків даних і виявлення місця втрати “Значень”.
  3. Хостинг забезпечує безперервну віддалену розботу Apache / PHP / MySQL, тоді як Доменне Ім’я створює людське текстове посилання, приховуючи фізичну IP адресу цієї машини.
  4. Процес розгортання проєкту (Деплоймент) складається з 3 невід’ємних фаз: Запакування БД в SQL Дамп (Експорт) та її завантаження на Віддалений сервер (Імпорт); Копіювання файлів PHP через протокал FTP; Перезапис конфігурацій (Credentials) файлу db.php для підключення з новими серверними паролями.

Джерела

  1. Базові принципи Дебагінгу PHP: https://xdebug.org/docs/ (Продвинутий) або просто https://www.php.net/manual/en/function.var-dump.php
  2. Що таке Хостинг? пояснення AWS: https://aws.amazon.com/ru/what-is/web-hosting/
  3. FileZilla Project (Офіційний FTP-Клієнт): https://filezilla-project.org/

Запитання для самоперевірки

  1. Куди націлиться досвідчений розробник, замість панічного перебирання свого коду, якщо його AJAX або POST запит завершився мовчазним “Білим екраном” або помилкою зі статусом серверу 500? Де фізично збираються причини таких переривань?
  2. Ви написали калькулятор, але він повертає Завжди Нуль від суми двох input. Яку комбінацію з двох функцій ви напишете в обробнику одразу після рядка з $_POST, щоб своїми очима побачити, чи дійсно браузер передав вам якісь числа, і не дати скрипту вивести вам черговий “Нуль”?
  3. Назвіть концептуальну різницю між послугою Реєстрації Домену сайту та послугою оренди Віртуального Хостингу для сайту. Чи може сайт фізично працювати тільки на одному з них без другого?
  4. Який проміжний і універсальний текстовий формат (з яким розширенням .???) використовується як стандарт обміну Даними між двома різними версіями і серверами MySQL чи MariaDB для експорту та імпорту існуючих таблиць?
  5. Згадайте Крок №3 Процесу Деплойменту. Яку найголовнішу інформацію, і в якому конкретно найважливішому файлі вашої системи, ви ВИТРАЧАЄТЕ зобов’язання змінити після перенесення папки з файлами за допомогою FTP на орендований сервер Хостингу, щоб застосунок не впав з помилкою Access Denied?