Глава 0.2: Окружение разработчика
Установка PHP, настройка VS Code, локальный сервер, первый "Hello World"
Зачем нужно окружение?
Чтобы писать PHP-код и видеть результат, тебе нужны три вещи:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ │ │ │ │ │
│ Редактор │ │ PHP │ │ Веб-сервер │
│ кода │ │ интерпретатор │ │ (локальный) │
│ │ │ │ │ │
│ VS Code │ │ php.exe │ │ Встроенный │
│ │ │ │ │ или Nginx │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
└───────────────────────┼───────────────────────┘
│
┌───────────▼───────────┐
│ Твой компьютер │
│ = локальный сервер │
└───────────────────────┘Редактор кода — где ты пишешь код (VS Code) PHP — программа, которая выполняет твой код Веб-сервер — принимает HTTP-запросы и передаёт их PHP
В этой главе мы всё это установим и настроим.
1. Выбор способа установки
Есть несколько путей. Выбери один в зависимости от твоей ОС и предпочтений:
Вариант A: Laragon (Windows) ⭐ Рекомендую
Плюсы:
- Всё в одном: PHP, MySQL, Nginx/Apache
- Красивые локальные домены (project.test)
- Легко переключать версии PHP
- Portable — можно носить на флешке
Минусы:
- Только Windows
Вариант B: XAMPP (Windows/Mac/Linux)
Плюсы:
- Кроссплатформенный
- Проверенный временем
- Включает phpMyAdmin
Минусы:
- Более громоздкий
- Устаревший интерфейс
- Сложнее настраивать домены
Вариант C: Ручная установка + встроенный сервер
Плюсы:
- Полный контроль
- Понимаешь, как всё работает
- Легковесно
Минусы:
- Больше ручной работы
- MySQL ставится отдельно
Вариант D: Docker (для продвинутых)
Пока не рекомендую — это для Phase 5. Сначала разберись с основами.
2. Установка: Windows + Laragon
Шаг 1: Скачай Laragon
- Перейди на https://laragon.org/download/
- Скачай Laragon Full (включает PHP, MySQL, Node.js)
- Размер ~150 MB
Шаг 2: Установи
- Запусти установщик
- Выбери папку (рекомендую
C:\laragon) - Оставь галочки по умолчанию
- Дождись завершения
Шаг 3: Запусти Laragon
- Открой Laragon
- Нажми кнопку "Start All"
- Должны загореться зелёные индикаторы:
- Apache (или Nginx)
- MySQL
┌────────────────────────────────────────┐
│ LARAGON │
├────────────────────────────────────────┤
│ │
│ 🟢 Apache Running │
│ 🟢 MySQL Running │
│ │
│ [ Start All ] [ Stop ] [ Reload ] │
│ │
│ 📁 Root: C:\laragon\www │
│ │
└────────────────────────────────────────┘Шаг 4: Проверь работу
- Открой браузер
- Перейди на
http://localhost - Должна открыться страница приветствия Laragon
Шаг 5: Найди важные папки
C:\laragon\
├── www\ ← Сюда кладёшь свои проекты
│ └── index.php ← Главная страница localhost
├── bin\
│ ├── php\ ← Здесь лежит PHP
│ │ └── php-8.x\
│ │ └── php.exe
│ └── mysql\ ← Здесь MySQL
└── etc\ ← КонфигиШаг 6: Добавь PHP в PATH (важно!)
Чтобы использовать php в терминале:
- Правый клик на Laragon → Tools → Path → Add Laragon to Path
- Перезапусти терминал
- Проверь:
php -vДолжно показать:
PHP 8.x.x (cli) (built: ...)Создание нового проекта в Laragon
- Правый клик на иконку Laragon
- Quick app → Blank
- Введи имя проекта (например,
calculator) - Laragon создаст:
- Папку
C:\laragon\www\calculator - Локальный домен
calculator.test
- Папку
Теперь http://calculator.test ведёт на твой проект!
3. Установка: Windows + XAMPP (альтернатива)
Шаг 1: Скачай XAMPP
- Перейди на https://www.apachefriends.org/
- Скачай XAMPP для Windows
- Выбери версию с PHP 8.x
Шаг 2: Установи
- Запусти установщик
- Выбери компоненты:
- ✅ Apache
- ✅ MySQL
- ✅ PHP
- ✅ phpMyAdmin
- Установи в
C:\xampp
Шаг 3: Запусти
- Открой XAMPP Control Panel
- Нажми Start напротив Apache
- Нажми Start напротив MySQL
┌────────────────────────────────────────────────────────┐
│ XAMPP Control Panel │
├─────────┬─────────────┬─────────┬──────────┬──────────┤
│ Module │ PID(s) │ Port(s) │ Actions │ │
├─────────┼─────────────┼─────────┼──────────┼──────────┤
│ Apache │ 1234 │ 80, 443 │ [Stop] │ [Admin] │
│ MySQL │ 5678 │ 3306 │ [Stop] │ [Admin] │
└─────────┴─────────────┴─────────┴──────────┴──────────┘Шаг 4: Проверь
Открой http://localhost — должна быть страница XAMPP.
Папка проектов
Проекты кладутся в C:\xampp\htdocs\
Добавь PHP в PATH
- Открой Параметры системы → Дополнительные параметры → Переменные среды
- В Path добавь:
C:\xampp\php - Перезапусти терминал
4. Установка: macOS
Вариант A: Homebrew (рекомендую)
# Установи Homebrew (если нет)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Установи PHP
brew install php
# Проверь версию
php -v
# Установи MySQL (опционально, для будущих проектов)
brew install mysql
brew services start mysqlВариант B: Laravel Valet (удобно для Laravel)
# После установки PHP через Homebrew
composer global require laravel/valet
valet install
# Теперь можешь "парковать" папки
cd ~/Sites
valet park
# Любая папка в ~/Sites станет доступна как folder-name.testВариант C: MAMP
Графическая альтернатива как XAMPP, но для Mac: https://www.mamp.info/
5. Установка: Linux (Ubuntu/Debian)
# Обнови пакеты
sudo apt update
# Установи PHP и необходимые модули
sudo apt install php php-cli php-mysql php-mbstring php-xml php-curl php-zip
# Проверь версию
php -v
# Установи MySQL
sudo apt install mysql-server
sudo mysql_secure_installation
# Опционально: Nginx
sudo apt install nginxДля Fedora/RHEL:
sudo dnf install php php-cli php-mysqlnd php-mbstring php-xml
sudo dnf install mysql-server6. Встроенный PHP-сервер
PHP имеет встроенный веб-сервер для разработки. Это самый простой способ запустить проект.
Как использовать
# Перейди в папку проекта
cd /path/to/your/project
# Запусти сервер
php -S localhost:8000Теперь открой http://localhost:8000 в браузере.
Пример
# Создай папку проекта
mkdir ~/projects/hello-php
cd ~/projects/hello-php
# Создай файл
echo '<?php echo "Hello, World!"; ?>' > index.php
# Запусти сервер
php -S localhost:8000PHP 8.x Development Server started at ...
Listening on http://localhost:8000
Document root is /home/user/projects/hello-php
Press Ctrl-C to quit.Каждый запрос будет логироваться в терминале:
[Tue Jan 14 10:30:45 2025] 127.0.0.1:52341 Accepted
[Tue Jan 14 10:30:45 2025] 127.0.0.1:52341 [200]: GET /
[Tue Jan 14 10:30:45 2025] 127.0.0.1:52341 ClosingВажно!
- Встроенный сервер только для разработки
- Не используй его в production
- Обрабатывает один запрос за раз (медленно)
- Для продакшена нужен Nginx или Apache
7. Установка VS Code
Шаг 1: Скачай и установи
- Перейди на https://code.visualstudio.com/
- Скачай версию для своей ОС
- Установи
Шаг 2: Русификация (опционально)
- Открой VS Code
- Нажми
Ctrl+Shift+X(расширения) - Найди "Russian Language Pack"
- Установи и перезапусти
Шаг 3: Установи расширения для PHP
Нажми Ctrl+Shift+X и установи:
Обязательные:
| Расширение | Зачем |
|---|---|
| PHP Intelephense | Автодополнение, подсказки, переход к определению |
| PHP Debug | Отладка с Xdebug |
| PHP Namespace Resolver | Автоимпорт классов |
Рекомендуемые:
| Расширение | Зачем |
|---|---|
| DotENV | Подсветка .env файлов |
| GitLens | Улучшенная работа с Git |
| Error Lens | Показывает ошибки прямо в строке кода |
| Path Intellisense | Автодополнение путей к файлам |
| Auto Rename Tag | Автопереименование HTML-тегов |
| Bracket Pair Colorizer | Разноцветные скобки (встроено в VS Code 1.60+) |
Шаг 4: Настрой VS Code для PHP
Открой настройки: Ctrl+, → Открой JSON (иконка в правом верхнем углу)
Добавь:
{
// PHP
"php.validate.executablePath": "C:\\laragon\\bin\\php\\php-8.2.4-Win32-vs16-x64\\php.exe",
// Для Mac/Linux:
// "php.validate.executablePath": "/usr/bin/php",
// Intelephense
"intelephense.environment.phpVersion": "8.2.0",
// Форматирование
"editor.formatOnSave": true,
"editor.tabSize": 4,
"editor.insertSpaces": true,
// Файлы
"files.associations": {
"*.php": "php"
},
// Исключить папки из поиска
"search.exclude": {
"**/vendor": true,
"**/node_modules": true
}
}Примечание: Путь к PHP зависит от твоей установки. Найди свой
php.exeи укажи его.
Шаг 5: Настрой терминал в VS Code
VS Code имеет встроенный терминал (`Ctrl+``).
Для Windows рекомендую использовать Git Bash или PowerShell:
{
"terminal.integrated.defaultProfile.windows": "Git Bash"
}8. Твой первый PHP-скрипт
Создай проект
Laragon:
- Правый клик → Quick app → Blank →
hello - Откроется папка
C:\laragon\www\hello
Или вручную:
mkdir hello
cd helloСоздай файл index.php
Открой папку в VS Code: File → Open Folder
Создай файл index.php:
<?php
echo "Привет, мир!";Запусти
Laragon: Открой http://hello.test
Встроенный сервер:
php -S localhost:8000Открой http://localhost:8000
Результат
В браузере ты увидишь:
Привет, мир!Поздравляю! 🎉 Ты только что написал и запустил свой первый PHP-код.
9. Разбор: что произошло?
Давай разберём, что случилось, когда ты открыл страницу:
┌──────────────────────────────────────────────────────────────────┐
│ ЧТО ПРОИЗОШЛО │
├──────────────────────────────────────────────────────────────────┤
│ │
│ 1. Ты ввёл http://hello.test (или localhost:8000) │
│ │ │
│ ▼ │
│ 2. Браузер отправил HTTP-запрос: │
│ GET / HTTP/1.1 │
│ Host: hello.test │
│ │ │
│ ▼ │
│ 3. Веб-сервер получил запрос │
│ Увидел, что запрашивается / │
│ Нашёл файл index.php │
│ │ │
│ ▼ │
│ 4. Веб-сервер передал файл PHP-интерпретатору │
│ │ │
│ ▼ │
│ 5. PHP выполнил код: │
│ <?php echo "Привет, мир!"; ?> │
│ Результат: строка "Привет, мир!" │
│ │ │
│ ▼ │
│ 6. Веб-сервер отправил HTTP-ответ: │
│ HTTP/1.1 200 OK │
│ Content-Type: text/html │
│ │
│ Привет, мир! │
│ │ │
│ ▼ │
│ 7. Браузер отобразил текст на экране │
│ │
└──────────────────────────────────────────────────────────────────┘Ключевой момент
Браузер не видит PHP-код. Он получает только результат выполнения.
Если ты откроешь "Просмотр кода страницы" (Ctrl+U), увидишь:
Привет, мир!Никакого <?php там нет!
10. PHP внутри HTML
PHP чаще всего используется внутри HTML:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Мой первый сайт</title>
</head>
<body>
<h1><?php echo "Привет, мир!"; ?></h1>
<p>Сейчас: <?php echo date("H:i:s"); ?></p>
<p>Сегодня: <?php echo date("d.m.Y"); ?></p>
</body>
</html>Что увидит браузер:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Мой первый сайт</title>
</head>
<body>
<h1>Привет, мир!</h1>
<p>Сейчас: 14:35:22</p>
<p>Сегодня: 27.01.2026</p>
</body>
</html>PHP-теги (<?php ... ?>) исчезли, на их месте — результат выполнения.
11. Синтаксис PHP: базовые правила
Теги PHP
<?php
// Это PHP-код
echo "Привет";
?>- Код PHP всегда внутри
<?php ... ?> - Закрывающий тег
?>можно опускать, если файл содержит только PHP - В современном PHP рекомендуется не ставить
?>в конце файла
Почему не ставить ?>?
Если после ?> случайно окажется пробел или пустая строка — это отправится в браузер. Это может сломать заголовки HTTP.
<?php
// Хороший стиль: файл заканчивается без ?>
echo "Привет";Короткий синтаксис echo
<!-- Полный -->
<p><?php echo $name; ?></p>
<!-- Короткий (рекомендуется в шаблонах) -->
<p><?= $name ?></p><?= $x ?> — это сокращение для <?php echo $x; ?>
Точка с запятой
Каждая инструкция заканчивается точкой с запятой:
<?php
echo "Строка 1";
echo "Строка 2";
echo "Строка 3";Комментарии
<?php
// Однострочный комментарий
# Ещё однострочный (реже используется)
/*
Многострочный
комментарий
*/
/**
* DocBlock комментарий
* Используется для документации функций и классов
*/12. Упражнение: Страница-визитка
Создай файл about.php:
<?php
// Данные (потом будут из базы данных)
$name = "Иван Петров";
$profession = "Начинающий PHP-разработчик";
$email = "ivan@example.com";
$skills = ["HTML", "CSS", "PHP", "MySQL"];
$year_started = 2025;
$current_year = date("Y");
$experience = $current_year - $year_started;
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?= $name ?> — <?= $profession ?></title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
line-height: 1.6;
padding: 40px;
max-width: 600px;
margin: 0 auto;
background: #f5f5f5;
}
.card {
background: white;
border-radius: 12px;
padding: 30px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
h1 {
color: #333;
margin-bottom: 5px;
}
.profession {
color: #666;
margin-bottom: 20px;
}
.info {
margin: 15px 0;
}
.info strong {
color: #333;
}
.skills {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-top: 10px;
}
.skill {
background: #e3f2fd;
color: #1976d2;
padding: 5px 12px;
border-radius: 20px;
font-size: 14px;
}
.footer {
margin-top: 20px;
padding-top: 20px;
border-top: 1px solid #eee;
font-size: 14px;
color: #999;
}
</style>
</head>
<body>
<div class="card">
<h1><?= $name ?></h1>
<p class="profession"><?= $profession ?></p>
<div class="info">
<strong>Email:</strong>
<a href="mailto:<?= $email ?>"><?= $email ?></a>
</div>
<div class="info">
<strong>Опыт:</strong>
<?php if ($experience < 1): ?>
Менее года
<?php else: ?>
<?= $experience ?> год(а)
<?php endif; ?>
</div>
<div class="info">
<strong>Навыки:</strong>
<div class="skills">
<?php foreach ($skills as $skill): ?>
<span class="skill"><?= $skill ?></span>
<?php endforeach; ?>
</div>
</div>
<div class="footer">
Страница сгенерирована: <?= date("d.m.Y H:i:s") ?>
</div>
</div>
</body>
</html>Что нового здесь:
- Переменные —
$name,$skills(начинаются с$) - Массив —
["HTML", "CSS", "PHP"] - Функция date() — возвращает текущую дату
- Условие if/else — выбор между вариантами
- Цикл foreach — проход по массиву
- Альтернативный синтаксис —
if(): ... endif;(удобнее в HTML)
Не переживай, если что-то непонятно — мы разберём всё это в следующих главах.
13. Структура проекта
Для простых проектов (Phase 0) используй такую структуру:
my-project/
├── index.php # Главная страница
├── about.php # Страница "О нас"
├── contact.php # Контакты
├── css/
│ └── style.css # Стили
├── js/
│ └── script.js # JavaScript (если нужен)
├── images/
│ └── logo.png # Картинки
└── includes/
├── header.php # Шапка сайта
└── footer.php # Подвал сайтаИспользование includes
includes/header.php:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title><?= $page_title ?? 'Мой сайт' ?></title>
<link rel="stylesheet" href="/css/style.css">
</head>
<body>
<nav>
<a href="/">Главная</a>
<a href="/about.php">О нас</a>
<a href="/contact.php">Контакты</a>
</nav>
<main>includes/footer.php:
</main>
<footer>
<p>© <?= date('Y') ?> Мой сайт</p>
</footer>
</body>
</html>index.php:
<?php
$page_title = "Главная страница";
include 'includes/header.php';
?>
<h1>Добро пожаловать!</h1>
<p>Это главная страница моего сайта.</p>
<?php include 'includes/footer.php'; ?>Теперь шапка и подвал в одном месте. Изменил один раз — изменилось везде!
14. Отладка: когда что-то не работает
Включи отображение ошибок
В начале PHP-файла (для разработки):
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');Или создай файл php.ini в папке проекта:
display_errors = On
error_reporting = E_ALLТипичные ошибки новичков
1. Белый экран (ничего не показывает)
Причина: Синтаксическая ошибка. PHP не может выполнить код.
Решение: Включи ошибки (см. выше) или проверь лог ошибок.
2. "Parse error: syntax error"
Parse error: syntax error, unexpected '}' in /path/file.php on line 15Причина: Забыл точку с запятой, скобку, кавычку.
Решение: Посмотри на указанную строку и строку выше неё.
3. "Undefined variable"
Warning: Undefined variable $nmae in /path/file.php on line 10Причина: Опечатка в имени переменной или переменная не определена.
Решение: Проверь написание. $nmae вместо $name?
4. Страница скачивается вместо отображения
Причина: Веб-сервер не обрабатывает PHP.
Решение: Убедись, что сервер запущен и настроен на обработку .php.
var_dump() — твой лучший друг
<?php
$data = ["name" => "Ivan", "age" => 25];
var_dump($data);
// Выведет:
// array(2) {
// ["name"]=> string(4) "Ivan"
// ["age"]=> int(25)
// }Используй var_dump() чтобы посмотреть, что внутри переменной.
die() / exit() — остановка выполнения
<?php
$user = getUserFromDatabase();
var_dump($user);
die(); // Остановит выполнение здесь
// Этот код не выполнится
echo "Продолжение...";15. Полезные команды терминала
PHP CLI
# Версия PHP
php -v
# Выполнить PHP-код
php -r "echo 'Hello';"
# Выполнить файл
php script.php
# Запустить встроенный сервер
php -S localhost:8000
# Запустить сервер с указанием корня
php -S localhost:8000 -t public/
# Проверить синтаксис файла (без выполнения)
php -l file.php
# Список установленных модулей
php -m
# Информация о PHP
php -i
# Найти php.ini
php --iniComposer (установим позже, но полезно знать)
# Версия
composer -V
# Инициализация проекта
composer init
# Установить зависимости
composer install
# Добавить пакет
composer require vendor/package
# Автозагрузка
composer dump-autoload16. Чеклист настройки
Убедись, что всё работает:
- [ ] PHP установлен (
php -vпоказывает версию 8.x) - [ ] PHP добавлен в PATH
- [ ] Веб-сервер запускается (Laragon/XAMPP или
php -S) - [ ]
http://localhostоткрывается в браузере - [ ] VS Code установлен
- [ ] Расширение PHP Intelephense установлено
- [ ] Создал файл
index.phpсecho "Привет"; - [ ] Файл отображается в браузере
- [ ] Ошибки PHP видны (если специально допустить ошибку)
17. Упражнения
Упражнение 1: Hello World вариации (10 минут)
Создай файл hello.php и выведи:
- Своё имя
- Текущую дату в формате "27 января 2026"
- Текущее время
- Результат вычисления
2 + 2 * 2
<?php
// Твой код здесьУпражнение 2: Страница с переменными (15 минут)
Создай profile.php:
- Определи переменные: имя, возраст, город, хобби (массив)
- Выведи их в красивом HTML
- Добавь CSS стили
Упражнение 3: Includes (20 минут)
- Создай структуру с
includes/header.phpиincludes/footer.php - Создай 3 страницы:
index.php,about.php,contact.php - Каждая страница должна использовать общие header и footer
- Добавь навигацию между страницами
Упражнение 4: Отладка (10 минут)
Найди и исправь ошибки в этом коде:
<?php
$name = "Иван"
$age = 25;
echo "Меня зовут $Name, мне $age лет."
$hobbies = ["футбол", "музыка" "книги"];
foreach ($hobbies as $hobby) {
echo "<li>$hobby</li>"
}18. Вопросы для самопроверки
Что делает команда
php -S localhost:8000?Почему браузер не видит PHP-код, а только результат?
Для чего нужен
<?= $variable ?>?Почему рекомендуют не ставить
?>в конце файла?Как включить отображение ошибок в PHP?
Для чего используется
include?Что покажет
var_dump()?
19. Частые проблемы и решения
| Проблема | Решение |
|---|---|
php не найден в терминале | Добавь PHP в PATH и перезапусти терминал |
| Белый экран | Включи display_errors |
| Файл скачивается | Сервер не обрабатывает PHP, проверь настройки |
| Порт занят | Используй другой порт: php -S localhost:8080 |
| Кириллица — кракозябры | Добавь <meta charset="UTF-8"> и сохрани файл в UTF-8 |
| Изменения не применяются | Обнови страницу (Ctrl+F5), проверь правильный файл |
Резюме главы
┌────────────────────────────────────────────────────────────────┐
│ ЗАПОМНИ ГЛАВНОЕ │
├────────────────────────────────────────────────────────────────┤
│ │
│ • Для PHP нужны: редактор + PHP + веб-сервер │
│ • Laragon (Windows) или Homebrew (Mac) — лучший старт │
│ • Встроенный сервер: php -S localhost:8000 │
│ • PHP-код внутри <?php ... ?> или <?= ... ?> │
│ • Браузер видит только результат, не код │
│ • Каждая инструкция заканчивается ; │
│ • var_dump() — для отладки │
│ • include — для переиспользования кода │
│ • Включай display_errors при разработке │
│ │
└────────────────────────────────────────────────────────────────┘Ответы к упражнению 4 (отладка)
<?php
$name = "Иван"; // Добавлена ;
$age = 25;
echo "Меня зовут $name, мне $age лет."; // $name с маленькой буквы, добавлена ;
$hobbies = ["футбол", "музыка", "книги"]; // Добавлена запятая между элементами
foreach ($hobbies as $hobby) {
echo "<li>$hobby</li>"; // Добавлена ;
}Следующая глава: Глава 0.3: Терминал и командная строка — базовые команды, навигация, почему это важно