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. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x