var_dump() та print_r(). Відображення помилок на екрані.google.com), яка приховує IP-адресу сервера.Ми пройшли довгий шлях від echo "Hello World" до повноцінного MVC-застосунку з базою даних, хешуванням паролів та сесіями. Але поки ваш сайт лежить у папці C:\xampp\htdocs\, його можете бачити лише ви. Сайти створюються для того, щоб ними користувався весь світ!
У цій, фінальній лекції курсу, ми навчимось “виловлювати” останні баги в коді (Дебагінг) та здійснимо довгоочікуване Розгортання (Deployment) — перенесемо ваш “Менеджер завдань” на реальний сервер в Інтернеті.
Програмування на 20% складається з написання коду і на 80% — з пошуку опечаток у ньому. Коли ваш код видає “Білий екран смерті” або База Даних чомусь не зберігає завдання, новачки часто впадають у паніку. Досвідчений інженер робить дебагінг.
За замовчуванням багато серверів налаштовані так, щоб приховувати помилки безпеки (щоб хакер не побачив шляхи до файлів). Щоб змусити PHP говорити вам, де саме помилка, додайте ці два рядки на самий початок вашого index.php:
<?php
// ТИМЧАСОВО змушуємо PHP малювати всі помилки прямо на екран
ini_set('display_errors', 1);
error_reporting(E_ALL);
// Далі вже йде підключення до бази чи сесії...
?>
Увага: Перед тим як заливати сайт на реальний (Production) сервер, ці два рядки обов’язково треба видалити (або закоментувати).
Якщо сайт видає “Помилку 500”, а екран повністю білий і нічого не показує — загляньте в панель вашого XAMPP. Для модуля Apache є кнопка Logs -> Apache (error.log). Відкрийте цей текстовий файл, прокрутіть в самий низ — там буде чітко написано, на якому рядку якого файлу ви забули поставити крапку з комою.
var_dump та dieУявіть ситуацію: користувач тисне “Залогуватися”, але його не пускає. Ви не знаєте, проблема у формі, у базі, чи у паролі. Ваша найголовніша зброя — це зупинити код і “зазирнути” всередину змінних.
В PHP для цього є 2 функції:
print_r($array); — Виводить масив у читабельному вигляді.var_dump($variable); — Виводить абсолютно все про змінну: її тип, кількість символів або елементів. Це найкращий вибір!<?php
// Ми ловимо дані з форми. ЗУПИНІТЬСЯ І ПЕРЕВІРТЕ!
$email = $_POST['email'];
echo "<pre>"; // Робить вивід var_dump красивим і структурованим (як в консолі)
var_dump($_POST); // Що ВЗАГАЛІ прилетіло з форми?
echo "</pre>";
die(); // Команда "Вмри". Миттєво зупиняє виконання всього коду нижче.
// Це не дасть спрацювати SQL-запиту чи редиректу. Ви просто побачите масив на екрані і все.
?>
Якщо var_dump($_POST) порожній — винна HTML-форма (можливо забули атрибут name=""). Якщо там є дані — форма працює, проблема у SQL-запиті. Такий послідовний підхід і є “Дебагінгом”.
Після тестування і дебагінгу на localhost, настає час переїзду на “Продакшн” (Production).
000webhost або InfinityFree. Вони повільні і показують рекламу, зате дозволяють спробувати свої сили без оплат.142.250.190.46), ви орендуєте (купуєте на рік) гарне ім’я mysite.com.Щоб “перенести” сайт з вашого комп’ютера на сервер хостингу, вам потрібно виконати два паралельні процеси: Перенести Файли і Перенести Дані.
Ваша локальна база task_manager не може просто так перелетіти через інтернет. Її треба “запакувати”.
phpMyAdmin.task_manager.SQL -> “Вперед”. Ви отримаєте файл task_manager.sql. Це звичайний текстовий файл, у якому прописані всі команди (CREATE TABLE..., INSERT...).phpMyAdmin вже НА ХОСТИНГУ. Відкриваєте нову створену базу і натискаєте вгорі Імпорт (Import) -> завантажуєте ваш .sql файл. Усі таблиці відновлені!Для передачі десятків файлів коду використовується спеціальна програма — FTP Клієнт (наприклад, FileZilla).
public_html (або www / htdocs), яка є “коренем” сайту на хостингу.Ваш сайт на хостингу не запрацює. Він видасть помилку “Access Denied”. Чому?
Бо у вашому файлі db.php прописано: new PDO('mysql:host=localhost', 'root', ''). Але на реальному сервері хостингу база даних має захищений пароль, а інколи й інший хост!
Вам необхідно через FileZilla:
db.php -> Редагувати.Вітаємо! Ваш перший MVC PHP застосунок офіційно доступний для всього світу!
display_errors) до читання Системних Логів (error.log) сервера для ідентифікації прихованих фатальних зупинок системи.die(); в парі з переглядом сирих масивів var_dump($_POST); є базовою навичкою покрокового тестування потоків даних і виявлення місця втрати “Значень”.Apache / PHP / MySQL, тоді як Доменне Ім’я створює людське текстове посилання, приховуючи фізичну IP адресу цієї машини.db.php для підключення з новими серверними паролями.input. Яку комбінацію з двох функцій ви напишете в обробнику одразу після рядка з $_POST, щоб своїми очима побачити, чи дійсно браузер передав вам якісь числа, і не дати скрипту вивести вам черговий “Нуль”?.???) використовується як стандарт обміну Даними між двома різними версіями і серверами MySQL чи MariaDB для експорту та імпорту існуючих таблиць?Access Denied?