Задать вопрос
LittleFatNinja
@LittleFatNinja
горе девелопер, любитель лютой садомии

Как реализовать запуск PHP кода из PHP и что делать если на хостинге отключены функции типа system() (необходимо компилить cpp)?

1)
Пилю сайт на PHP + Yii2 (weblike.zz.mu)
У каждого пользователя есть список задач (С++), он решает какую то задачу и вводит код.
Соответственно, нужно скомпилировать его код.
Сайт на бесплатном хостинге. Функции типа system() отключены. Я так понимаю, только покупка VPS меня спасет, так как появляется свобода действий, так же?

2)
Тот же сайт, но задачи на пхп.
Если с С++ понятно - записать в файл, скомпилить, запустить, то с PHP не очень
Как допустим вменяемо выполнить PHP код, который пришел от юзера? Уже задавал такой, но задам еще раз. В прошлый раз советовали eval(), я так понимаю это единственный вариант?

Необходимо выполнить пхп код в строке
$code = '<?php echo 5;'

Буду благодарен за ответы.
  • Вопрос задан
  • 659 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 6
nazarpc
@nazarpc
Open Source enthusiast
Я бы рекомендовал взять выделенный сервер (виртуальный либо физический), поставить туда Docker, и запускать код ИСКЛЮЧИТЕЛЬНО в одноразовом чистом изолированном окружении с разумными таймаутами и ограничениями ресурсов.
Ответ написан
POS_troi
@POS_troi
СадоМазо Админ, флудер, троль.
Если хостер вминяемый и нормально настроенный сервер то фиг они вам позволят творить такую мего фигню, обходы конечно есть но сильно зависит от конкретной системы, библиотек и ещё многих факторов. И уж точно не для паблика такая инфа ;)

Хочется рюшек и куртизанок? Добро пожаловать на выделенный VPS :)
Там творите что хотите, в рамках пользовательского соглашения конечно.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Если у площадки есть SSH-доступ и разрешено делать компиляцию (запуск) - подключайте локальной "петлёй" через сокеты и давайте команды из PHP.
Иначе VPS only!
Ответ написан
Комментировать
@vGrabko99
html, css, js, php, golang, mysql
Пхп очень просто (хотя довольно опасно) записываете файл и потом обращаетесь к нему аяксом
Ответ написан
Комментировать
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
bellard.org/jslinux
Можно прямо на клиенте компилить и запускать, но будет очень долго.
Ответ написан
Комментировать
Creamov
@Creamov
Senior Fullstack Software Engineer
Посмотрите Runkit_Sandbox.

Экземпляр класса Runkit_Sandbox создает отдельный поток основного процесса с собственным окружением и выделенной областью памяти (стеком). С помощью дополнительных параметров конструктора можно ограничивать функционал интерпретатора в песочнице, создавая таким образом безопасное окружение для выполнения пользовательского кода.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы