PHP
Exit в PHP: как остановить выполнение скрипта
Короткий ответ: exit в PHP полностью останавливает выполнение текущего скрипта. Его часто используют после редиректа, при критической ошибке или в простом endpoint, где после ответа больше ничего не должно выполняться
exit и die в PHP делают одно и то же. В учебных проектах чаще пишут exit, потому что по названию понятнее: выполнение заканчивается здесь
Самый простой пример
<?php
echo 'До exit';
exit;
echo 'После exit';
В браузере или консоли вы увидите только До exit. Вторая строка не выполнится
exit с сообщением
Можно передать сообщение
<?php
$isAdmin = false;
if (!$isAdmin) {
exit('Доступ закрыт');
}
echo 'Панель администратора';
Такой вариант удобен для учебных проверок, но в реальном сайте лучше показывать нормальную страницу ошибки или делать редирект на авторизацию
exit после редиректа
Самый важный практический сценарий
<?php
header('Location: /login.php');
exit;
header('Location') отправляет браузеру команду перейти на другой адрес, но PHP-код сам по себе может продолжить выполняться. exit гарантирует, что после редиректа не будет выполнено ничего лишнего
exit и return
return завершает выполнение функции или подключенного файла, а exit завершает весь скрипт
<?php
function checkAge(int $age): string
{
if ($age < 18) {
return 'Доступ ограничен';
}
return 'Доступ разрешен';
}
echo checkAge(16);
echo ' Код продолжает работать';
Здесь return возвращает значение из функции, но не останавливает весь файл. Если заменить логику на exit, скрипт закончится полностью
Где exit полезен
exit уместен, когда дальнейшее выполнение точно не нужно
- после редиректа
- после отдачи JSON-ответа в простом endpoint
- при критической проверке доступа
- в маленьком диагностическом скрипте
- при ручной остановке выполнения во время отладки
Но если вы пишете нормальную функцию, обычно лучше вернуть значение через return, а не завершать весь сайт изнутри функции
Пример с JSON
<?php
header('Content-Type: application/json; charset=utf-8');
echo json_encode([
'ok' => true,
'message' => 'Данные сохранены',
], JSON_UNESCAPED_UNICODE);
exit;
После JSON-ответа скрипт завершен. Это помогает случайно не добавить в ответ HTML, пробелы или отладочный вывод
Мини-практика
Создайте файл exit-test.php и напишите проверку возраста. Если возраст меньше 18, завершите скрипт сообщением Доступ ограничен. Если возраст 18 или больше, выведите Добро пожаловать. Затем замените exit на return внутри функции и посмотрите, как меняется поведение
Частые ошибки
Забывают exit после редиректа Браузер уйдет на другую страницу, но PHP может успеть выполнить код ниже
Используют exit внутри обычной функции Функция становится слишком резкой: вместо возврата результата она завершает весь скрипт
Печатают технические ошибки пользователю exit('SQL error') удобен в учебном примере, но плох на публичном сайте
Путают остановку функции и остановку файла Для функции обычно нужен return, для полного завершения скрипта — exit
Что почитать дальше по PHP
Если нужен общий маршрут по теме, откройте рубрику PHP. Для соседних задач пригодятся эти разборы:
- Composer в PHP: установка пакетов без ручного копирования
- Joomla: как убрать index.php из адреса сайта
- Laravel: первый route и controller для новичка
- Linux install PHP: установка PHP на Ubuntu и проверка окружения