Установка и первый скрипт
Что понадобится
- PHP 8.3+ — современная версия
- Composer — менеджер зависимостей
- Веб-сервер — Nginx или Apache
- База данных — MySQL или PostgreSQL
Для начала хватит PHP + Composer. Веб-сервер и БД — позже.
Установка на Linux
Ubuntu / Debian:
sudo apt update
sudo apt install php8.3 php8.3-cli php8.3-fpm php8.3-mbstring \
php8.3-xml php8.3-curl php8.3-zip php8.3-pgsql php8.3-mysql
Проверка:
php -v
# PHP 8.3.10 (cli) (built: Jul 4 2024)
Fedora / RHEL:
sudo dnf install php php-cli php-fpm php-mbstring php-xml php-pgsql
Установка на macOS
Через Homebrew:
brew install php
brew install composer
Проверка:
php -v
macOS поставляется с PHP, но старой версии — не используй системный.
Установка на Windows
Вариант 1: Laragon — рекомендую.
- Скачать с laragon.org
- Установить, запустить
- PHP, Nginx/Apache, MySQL — всё в комплекте
Вариант 2: XAMPP — классика.
- Скачать с apachefriends.org
- PHP + Apache + MySQL в одном установщике
Вариант 3: WSL2 + Ubuntu — как на сервере.
wsl --install -d Ubuntu
# затем установка PHP как в Ubuntu
WSL2 даёт реальный Linux — лучший вариант для разработки.
Проверка установки
Версия:
php -v
Расширения:
php -m
Должны быть: mbstring, xml, curl, json, pdo, pdo_pgsql (или pdo_mysql).
Конфиг:
php --ini
# Loaded Configuration File: /etc/php/8.3/cli/php.ini
Первый скрипт через CLI
Создай файл hello.php:
<?php
echo 'Привет, мир!';
Запусти:
php hello.php
# Привет, мир!
Что произошло:
- PHP-интерпретатор прочитал файл.
- Выполнил
echo. - Вывел строку в stdout.
Запуск через встроенный сервер
PHP имеет встроенный веб-сервер — удобно для разработки:
php -S localhost:8000
Открой в браузере http://localhost:8000.
Указать папку:
php -S localhost:8000 -t public/
Что здесь: -t public/ — корневая директория.
Не используй встроенный сервер в проде — он однопоточный и небезопасный. Только для разработки.
Первый скрипт в браузере
Структура:
my-app/
├── public/
│ └── index.php
└── src/
public/index.php:
<?php
declare(strict_types=1);
echo '<h1>Привет из PHP!</h1>';
echo '<p>Время: ' . date('H:i:s') . '</p>';
Запуск:
php -S localhost:8000 -t public/
Открыть http://localhost:8000 — увидишь HTML.
Переменные окружения
.env файл для конфигурации:
APP_ENV=local
APP_DEBUG=true
DB_HOST=localhost
DB_NAME=myapp
Чтение в PHP:
<?php
$host = $_ENV['DB_HOST'] ?? 'localhost';
$debug = filter_var($_ENV['APP_DEBUG'] ?? false, FILTER_VALIDATE_BOOLEAN);
Стандартный подход — библиотека vlucas/phpdotenv:
composer require vlucas/phpdotenv
<?php
require __DIR__ . '/vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
echo $_ENV['APP_ENV'];
Не коммить .env в git — там секреты.
Composer
Composer — менеджер зависимостей, аналог npm для PHP.
Установка:
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
Проверка:
composer --version
Создание проекта:
composer init
Установка пакета:
composer require monolog/monolog
composer.json:
{
"name": "my/app",
"require": {
"php": "^8.3",
"monolog/monolog": "^3.0"
},
"autoload": {
"psr-4": {
"App\\\\": "src/"
}
}
}
composer install — установить зависимости из composer.lock.
Автозагрузка
PSR-4 — стандарт автозагрузки:
{
"autoload": {
"psr-4": {
"App\\\\": "src/"
}
}
}
Что это значит:
- Класс
App\Controllers\HomeController - Лежит в
src/Controllers/HomeController.php
Применяем:
composer dump-autoload
Использование:
<?php
require __DIR__ . '/vendor/autoload.php';
use App\Controllers\HomeController;
$controller = new HomeController();
Ручные require больше не нужны.
Структура проекта
Рекомендую:
my-app/
├── public/ # точка входа
│ └── index.php
├── src/ # код приложения
│ ├── Controllers/
│ ├── Models/
│ └── Services/
├── config/ # конфиги
├── templates/ # шаблоны
├── tests/ # тесты
├── vendor/ # зависимости (git ignore)
├── .env
├── .env.example
├── .gitignore
├── composer.json
└── composer.lock
.gitignore:
/vendor/
.env
.phpunit.result.cache
Настройка IDE
VS Code:
- PHP Intelephense — автодополнение, типы.
- PHP Debug — отладка через Xdebug.
- Laravel Blade Snippets — для Laravel.
PhpStorm:
- Всё из коробки.
- Настрой Xdebug в
Settings → PHP → Debug.
Первый «настоящий» скрипт
public/index.php:
<?php
declare(strict_types=1);
require __DIR__ . '/../vendor/autoload.php';
$name = $_GET['name'] ?? 'Гость';
$greeting = htmlspecialchars("Привет, {$name}!", ENT_QUOTES, 'UTF-8');
header('Content-Type: text/html; charset=utf-8');
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Первый скрипт</title>
</head>
<body>
<h1><?= $greeting ?></h1>
<p>Текущее время: <?= date('H:i:s') ?></p>
</body>
</html>
Открыть: http://localhost:8000/?name=Иван.
Важно: htmlspecialchars экранирует HTML — защита от XSS. Всегда экранируй пользовательский ввод.
Полезные команды
php -v # версия
php -m # расширения
php --ini # конфиг
php -S localhost:8000 # встроенный сервер
php -l file.php # проверка синтаксиса
composer install # установка зависимостей
composer require pack/name # добавить пакет
composer dump-autoload # пересобрать автозагрузку
Итог
- PHP 8.3+ — современная версия.
- Composer — для зависимостей.
php -S— встроенный сервер для разработки.- PSR-4 — стандарт автозагрузки.
- Структура:
public/,src/,vendor/. .env— для конфигурации, не в git.
Дальше — переменные и типы данных.