Нужно быстро проверить фрагмент PHP: как работает функция, что вернёт выражение, почему массив сортируется не так, как ожидалось. Ставить локальный сервер ради пары строк — долго. Песочница PHP выполняет фрагмент кода и показывает вывод, ошибки и предупреждения. Код работает в отдельном процессе без php.ini сайта: работа с файлами, сетью, процессами, переменными окружения и настройками 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. Подключить файл или выполнить строку как код нельзя. - Ограничение времени и памяти. Долгий или тяжёлый код прерывается.
- Ограниченный набор расширений. Только безопасные расширения.
- Не заменяет полноценный сервер. Для кода, который зависит от фреймворка или базы данных, нужна другая среда.
Как пользоваться: пошагово
- Введите код PHP — с
<?phpили без. - Нажмите «Выполнить» или Ctrl+Enter.
- Посмотрите вывод и ошибки. Если код не запущен, исправьте отмеченные строки.
Типичные ошибки
- Ожидать доступ к файлам. Файловая система недоступна. Код не может читать и записывать файлы.
- Пытаться сделать сетевой запрос. Сеть и DNS недоступны. Запросы не выполнятся.
- Использовать
includeилиrequire. Подключить файл нельзя. - Вызывать отключённую функцию. Песочница отключает функции, которые могут навредить серверу. Это защита, а не ошибка.
- Ожидать, что код с базой данных сработает. Подключение к базе данных недоступно.
- Игнорировать ограничение времени. Бесконечный цикл будет остановлен, но полезный код с длинными вычислениями тоже может прерваться.
Вопросы и ответы
Что недоступно в песочнице?
Файлы и каталоги, сеть и DNS, запуск команд и процессов, переменные окружения, изменение настроек PHP, include/require, eval, отражение классов, unserialize и расширения, кроме безопасных (строки, массивы, математика, даты, JSON, регулярные выражения, хеши, mbstring и т. п.).
Почему функция «не определена», хотя она есть в PHP?
Песочница отключает функции, которые могут читать файлы, обращаться к сети или управлять процессами. Если такая функция вызывается по имени из переменной, PHP сообщит «Call to undefined function».
Какая версия PHP?
Та, что установлена на сервере сайта; она показывается в результате.
Отправляется ли код на сервер?
Да, код выполняется на сервере сайта в изолированном процессе. Введённые данные и результаты не сохраняются, ведётся только обезличенный счётчик запусков.
Можно ли подключить внешнюю библиотеку?
Нет, include и require недоступны. Можно использовать только встроенные функции и безопасные расширения.
Что будет с бесконечным циклом?
Код выполняется в отдельном процессе с ограничением времени. По истечении времени процесс прерывается, а сайт продолжает работать.
Итог
Песочница PHP — инструмент для выполнения фрагмента PHP в изолированном процессе. Она показывает вывод, ошибки и предупреждения, сообщает версию PHP и перечисляет недоступные функции до запуска. Код не имеет доступа к файлам, сети, процессам и настройкам сервера, а время, память и объём вывода ограничены. Помните, что отключённые функции — это защита, а не ошибка, и не ждите доступа к файлам и сети — и песочница будет удобным местом для проверки идей.