Песочница PHP: как выполнить код в изолированном процессе и увидеть вывод и ошибки

Нужно быстро проверить фрагмент PHP: как работает функция, что вернёт выражение, почему массив сортируется не так, как ожидалось. Ставить локальный сервер ради пары строк — долго. Песочница PHP выполняет фрагмент кода и показывает вывод, ошибки и предупреждения. Код работает в отдельном процессе без php.ini сайта: работа с файлами, сетью, процессами, переменными окружения и настройками PHP отключена, а время, память и объём вывода ограничены. Бесконечный цикл будет остановлен, а функции, недоступные в песочнице, перечисляются до запуска.

В этой статье разберём, что доступно в песочнице, а что нет, почему функция «не определена», хотя она есть в PHP, и как работает изоляция.

Интерфейс онлайн-инструмента Песочница PHP
Интерфейс онлайн-инструмента Песочница PHP

Что умеет песочница

Песочница PHP принимает код и выполняет его в изолированном процессе на сервере.

Параметр Что делает
Код PHP Фрагмент кода, до 20 000 символов. Открывающий тег <?php можно не писать
Выполнить Запускает код
Ctrl+Enter Горячая клавиша запуска
Вывод Результат выполнения, ошибки и предупреждения
Версия PHP Показывается в результате

Код выполняется в отдельном процессе с ограничением времени и памяти, без доступа к файлам, сети, процессам и настройкам сервера. Недоступные функции и конструкции сообщаются до запуска.

Запрос выполняет сервер сайта: введённые данные и результаты не сохраняются, ведётся только обезличенный счётчик запусков.

Что доступно, а что нет

Изоляция — главная особенность песочницы.

Недоступно Почему
Файлы и каталоги Код не может читать и записывать файлы
Сеть и DNS Нет доступа к внешним ресурсам
Запуск команд и процессов Нельзя выполнить системную команду
Переменные окружения Нет доступа к окружению сервера
Изменение настроек PHP ini_set и подобное недоступны
include / require Нельзя подключить файл
eval Нельзя выполнить строку как код
Отражение классов Ограничено
unserialize Отключён
Расширения, кроме безопасных Только базовый набор
Доступно Что это
Строки и массивы Основная работа с данными
Математика round, array_sum и другие
Даты DateTime, date
JSON json_encode, json_decode
Регулярные выражения preg_*
Хеши hash, md5, sha1 и другие
mbstring Работа с многобайтными строками
Другие безопасные функции Базовый набор PHP

Это значит: можно проверить логику, работу с массивами и строками, JSON, регулярки — но нельзя обратиться к файлам, сети или настройкам сервера.

Почему изоляция важна

Изоляция защищает сервер и данные.

Риск Как защищает песочница
Код читает файлы сайта Нет доступа к файловой системе
Код отправляет данные наружу Нет доступа к сети
Код запускает команды Нет доступа к процессам
Код меняет настройки Нет доступа к php.ini и ini_set
Код подключает чужой файл include и require недоступны
Код выполняется бесконечно Ограничение времени останавливает его
Код съедает память Ограничение памяти останавливает его

Даже если вставить подозрительный код, он не получит доступ к серверу и его данным.

Почему функция «не определена», хотя она есть в PHP

Частая ситуация: функция существует в PHP, но песочница сообщает Call to undefined function.

Причина Что происходит
Функция отключена Песочница отключает функции, которые могут читать файлы, обращаться к сети или управлять процессами
Вызов по имени из переменной Если функция вызывается динамически, PHP сообщает «Call to undefined function»
Расширение не подключено Некоторые функции требуют расширений, которых нет в песочнице

Это не ошибка песочницы, а её защита. Функции, которые могут навредить серверу, отключены намеренно.

Бесконечный цикл и ограничения

Бесконечный цикл в обычном PHP может повесить процесс. Здесь этого не произойдёт.

Ограничение Что происходит
Время Код прерывается по истечении времени
Память Код прерывается при превышении лимита памяти
Объём вывода Слишком большой вывод ограничивается
Отдельный процесс Сбой кода не влияет на сайт

Код выполняется в отдельном процессе, поэтому даже при ошибке или зависании сайт продолжает работать.

Вывод, ошибки и предупреждения

Песочница показывает результат выполнения и диагностику.

Что показывается Зачем
Вывод Результат echo, print, var_dump и других функций
Ошибки Синтаксические и runtime-ошибки
Предупреждения warning и notice
Версия PHP Чтобы знать, в какой версии выполняется код

Ошибки и предупреждения помогают найти проблему: синтаксис, неверный вызов функции или логическая ошибка.

Зачем использовать песочницу

Задача Что даёт песочница
Проверка фрагмента Быстро выполнить код без локального сервера
Отладка Увидеть вывод и ошибки
Обучение Попробовать функции и конструкции PHP
Проверка алгоритма Убедиться, что логика работает
Работа с JSON и массивами Проверить преобразования
Безопасность Выполнить подозрительный код без риска для сервера

Ограничения песочницы

  • Нет файлов и сети. Код не может читать файлы и обращаться к внешним ресурсам.
  • Нет include и eval. Подключить файл или выполнить строку как код нельзя.
  • Ограничение времени и памяти. Долгий или тяжёлый код прерывается.
  • Ограниченный набор расширений. Только безопасные расширения.
  • Не заменяет полноценный сервер. Для кода, который зависит от фреймворка или базы данных, нужна другая среда.

Как пользоваться: пошагово

  1. Введите код PHP — с <?php или без.
  2. Нажмите «Выполнить» или Ctrl+Enter.
  3. Посмотрите вывод и ошибки. Если код не запущен, исправьте отмеченные строки.

Типичные ошибки

  • Ожидать доступ к файлам. Файловая система недоступна. Код не может читать и записывать файлы.
  • Пытаться сделать сетевой запрос. Сеть и DNS недоступны. Запросы не выполнятся.
  • Использовать include или require. Подключить файл нельзя.
  • Вызывать отключённую функцию. Песочница отключает функции, которые могут навредить серверу. Это защита, а не ошибка.
  • Ожидать, что код с базой данных сработает. Подключение к базе данных недоступно.
  • Игнорировать ограничение времени. Бесконечный цикл будет остановлен, но полезный код с длинными вычислениями тоже может прерваться.

Вопросы и ответы

Что недоступно в песочнице?

Файлы и каталоги, сеть и DNS, запуск команд и процессов, переменные окружения, изменение настроек PHP, include/require, eval, отражение классов, unserialize и расширения, кроме безопасных (строки, массивы, математика, даты, JSON, регулярные выражения, хеши, mbstring и т. п.).

Почему функция «не определена», хотя она есть в PHP?

Песочница отключает функции, которые могут читать файлы, обращаться к сети или управлять процессами. Если такая функция вызывается по имени из переменной, PHP сообщит «Call to undefined function».

Какая версия PHP?

Та, что установлена на сервере сайта; она показывается в результате.

Отправляется ли код на сервер?

Да, код выполняется на сервере сайта в изолированном процессе. Введённые данные и результаты не сохраняются, ведётся только обезличенный счётчик запусков.

Можно ли подключить внешнюю библиотеку?

Нет, include и require недоступны. Можно использовать только встроенные функции и безопасные расширения.

Что будет с бесконечным циклом?

Код выполняется в отдельном процессе с ограничением времени. По истечении времени процесс прерывается, а сайт продолжает работать.

Итог

Песочница PHP — инструмент для выполнения фрагмента PHP в изолированном процессе. Она показывает вывод, ошибки и предупреждения, сообщает версию PHP и перечисляет недоступные функции до запуска. Код не имеет доступа к файлам, сети, процессам и настройкам сервера, а время, память и объём вывода ограничены. Помните, что отключённые функции — это защита, а не ошибка, и не ждите доступа к файлам и сети — и песочница будет удобным местом для проверки идей.

Предыдущая запись

Песочница JavaScript: как выполнить код в изолированной среде и увидеть вывод console

Онлайн-песочница JavaScript: выполнение фрагмента кода с выводом console.log, console.warn, console.error и ошибками с номерами строк. Изолированная среда без доступа к странице, cookie, хранилищам и сети. Бесконечный цикл не повесит вкладку.
Далее