Урок 1. Что такое PHP и как его запустить
PHP работает на сервере. Когда браузер открывает адрес вида example.com/index.php, веб-сервер не отдаёт файл как есть, а передаёт его PHP. PHP выполняет код, а браузеру уходит то, что код вывел, — обычно HTML-страница.
Поэтому код PHP посетитель не видит: в браузере через «Просмотр кода страницы» видна только готовая разметка. И поэтому файл .php нельзя просто открыть двойным щелчком, как HTML: его должен кто-то выполнить.
Для учёбы хватит PHP на своём компьютере. Он умеет две вещи: выполнять программы в терминале и работать маленьким веб-сервером для проверки страниц.
Установка
Способ зависит от системы на вашем компьютере.
Windowsархив с сайта PHP
- Откройте страницу загрузки PHP для Windows. У самой новой версии 8.x скачайте архив Zip варианта x64 Non Thread Safe.
- Распакуйте архив в папку
C:\php— в ней должен оказаться файлphp.exe. - В той же папке сделайте копию файла
php.ini-developmentи назовите еёphp.ini. Это файл настроек; вариант development показывает ошибки на экране — при учёбе так и нужно. - Добавьте папку в переменную Path, чтобы команда
phpработала из любой папки: нажмитеWin+R, введитеsysdm.cpl, на вкладке «Дополнительно» нажмите «Переменные среды», в верхнем списке выберитеPath→ «Изменить» → «Создать» и впишитеC:\php. Нажмите «ОК» во всех окнах. - Откройте новое окно PowerShell (в уже открытом окне Path не обновится) и проверьте установку. Как открыть PowerShell — в статье Командная строка и PowerShell.
php -vВ ответ появится строка, которая начинается с PHP 8. и номера скачанной версии, с пометкой (cli). Если Windows сообщает, что не найден файл DLL (например, VCRUNTIME140.dll), установите пакет Microsoft Visual C++ Redistributable — ссылка на него есть на той же странице загрузки.
Расширения
Некоторые возможности PHP подключаются отдельно — расширениями. Для курса нужны три: строки на русском (mbstring), база SQLite (pdo_sqlite) и определение типа файла (fileinfo).
- Откройте
C:\php\php.iniв редакторе. - Найдите поиском строки
extension=fileinfo,extension=mbstringиextension=pdo_sqliteи уберите точку с запятой в их начале. Точка с запятой означает комментарий: строка с ней не действует. - Так же уберите точку с запятой у строки
extension_dirи впишите в неё полный путь к папке расширений. - Сохраните файл.
Должно получиться так:
extension_dir = "C:\php\ext"
extension=fileinfo
extension=mbstring
extension=pdo_sqliteПроверьте: команда php -m выводит список подключённых расширений, в нём должны быть все три.
Ubuntu и Debianпакеты из системы
Введите команды в терминале (как его открыть — в статье Терминал и первые команды):
sudo apt update
sudo apt install php-cli php-mbstring php-sqlite3
php -vПервая команда обновляет список пакетов, вторая ставит PHP, третья показывает его версию. php-cli — сам PHP для терминала, php-mbstring — функции для строк на русском, php-sqlite3 — база SQLite для урока о PDO. Ставится версия PHP, которая входит в систему: в Ubuntu 24.04 это PHP 8.3, в Debian 12 — PHP 8.2. Расширения после установки пакетов включаются сами.
Пакет php без приставки обычно ставит вместе с собой веб-сервер Apache. Для учёбы он не нужен: хватит php-cli и встроенного сервера PHP.
macOSчерез Homebrew
PHP удобно поставить через Homebrew — программу, которая ставит другие программы командой в терминале. Если Homebrew ещё нет, установите его по статье Как установить Homebrew на Mac. Затем в Терминале:
brew install php
php -vВторая команда показывает версию PHP — значит, установка прошла.
Есть и готовые сборки «всё в одном», например XAMPP: Apache, PHP и база MariaDB одним установщиком. Для курса они не обязательны — встроенного сервера PHP достаточно.
Первая программа
Создайте папку для уроков, например C:\php-lessons в Windows или ~/php-lessons в Linux и macOS (~ — ваша домашняя папка), и в ней файл hello.php:
<?php
echo "Привет, мир!\n";
echo "2 + 2 = " . (2 + 2) . "\n";Привет, мир!
2 + 2 = 4Такой результат появится в терминале, если перейти в папку с файлом и запустить его командой php:
cd ~/php-lessons
php hello.phpВ Windows первая команда — cd C:\php-lessons, вторая та же.
Что здесь написано:
<?php— начало кода PHP. Всё, что стоит в файле до него, выводится как есть.echoвыводит текст. Каждая команда заканчивается точкой с запятой;— забытая;самая частая ошибка новичка."\n"— перевод строки. Точка.склеивает строки в одну.
Закрывающий тег ?> в файле, где только код, не пишут: он не нужен, а пустая строка после него может сломать отправку заголовков (об этом справка headers already sent).
Сохраняйте файлы в кодировке UTF-8 — Visual Studio Code делает так сам. В другой кодировке русские буквы превратятся в непонятные знаки.
Страница в браузере
Создайте в той же папке файл index.php:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>Первая страница</title>
</head>
<body>
<h1>Привет из PHP</h1>
<p>Дважды два: <?= 2 * 2 ?></p>
<p>Версия PHP: <?= PHP_VERSION ?></p>
</body>
</html>Здесь PHP вставлен прямо в HTML. <?= … ?> — короткая запись для <?php echo …; ?>: вывести значение в это место страницы. PHP_VERSION — встроенная константа с номером версии.
Запустите встроенный сервер в папке с файлом:
php -S localhost:8000Откройте в браузере адрес http://localhost:8000 — появится страница, а вместо <?= 2 * 2 ?> будет число 4. Посмотрите код страницы в браузере: PHP там нет, только готовый HTML. Без имени файла сервер открывает index.php, другие файлы — по имени: http://localhost:8000/hello.php.
В терминале сервер пишет строку о каждом запросе. Остановить его — Ctrl+C. Если файлы сайта лежат во вложенной папке, укажите её ключом -t: php -S localhost:8000 -t public.
Встроенный сервер — только для проверки на своём компьютере: он обрабатывает запросы по одному и не рассчитан на открытую сеть. С адресом localhost его видит только ваш компьютер. С адресом 0.0.0.0 сервер откроется всем в сети, и любой сможет скачать файлы из папки — базу данных, настройки с паролями.
На настоящем сервере PHP работает вместе с Apache или nginx — это настраивают при выкладке сайта.
Частые ошибки
- «Имя "php" не распознано как имя командлета» (PowerShell) или «не является внутренней или внешней командой» (cmd) — папки
C:\phpнет в Path или окно терминала открыто до настройки. Command 'php' not foundв Ubuntu — не установлен пакетphp-cli.- Браузер показывает код вместо страницы или предлагает скачать файл — страница открыта как файл (адрес начинается с
file://), а не через серверhttp://localhost:8000. Failed to listen on localhost:8000— порт занят другой программой или вторым запуском сервера. Возьмите другой порт:php -S localhost:8080.- Вместо русских букв непонятные знаки — файл сохранён не в UTF-8 или в HTML нет
<meta charset="utf-8">.
Коротко
- PHP выполняется на сервере, браузер получает только результат — обычно HTML.
- Windows: архив с windows.php.net в
C:\php, копияphp.ini-developmentкакphp.ini, папка — в Path. - Ubuntu и Debian:
sudo apt install php-cli php-mbstring php-sqlite3. - Проверка —
php -v, запуск программы —php файл.php. - Страницы проверяют встроенным сервером:
php -S localhost:8000, остановка —Ctrl+C. - Код начинается с
<?php, команды заканчиваются;,<?= … ?>выводит значение в HTML.