К этому очень полезному ответу добавлю...
А обязательно для фильтрации использовать preg_match()? В $_POST['request'][0] хранится имено regex, или простой текст? Если второе - то банальный strstr() ускорит работу...
Судя по логам, у вас 2 пакета недоустановились, atop и vesta-nginx.
Можно и их попытаться переустановить apt reinstall -y atop vesta-nginx curl
но эта команда может поломать работу nginx, а это на продакшене весьма чревато...
А ещё можно проверять наличие конкретно самой строки: nginx -V 2>&1 | egrep -o "--with-compat"
Так выведет только "--with-compat", удобно использовать в переменных в BASH-скриптах.
HLS live-трасляция из ffmpeg посредством nginx. Это и m3u8, и одинаковая картинка на всех экранах в реальном времени, и (в принципе) возможность её поменять в любую секунду через входной видеопоток/плейлист.
Ankhena, для PHP это нормально, переменные внутри текстовых строк обрабатываются без проблем. К тому же ТС и не жалуется на отсутствие значений из этих переменных. Ему значения из $('input[name="material"]:checked').val() не прилетают.
Так потрудитесь сформулировать вопрос, потом перечитайте его, исправьте ошибки, ещё раз перечитайте, дайте прочитать другому человеку, объясните ему что имелось ввиду, исправьте вопрос, и потом думайте, постить ли уже вопрос на Хабр, или и так понятно где была ошибка...
Тем, что для операнда ! и результат в вида число 0 (искомое найдено в 0-ом элементе массива), и результат false (искомое в массиве вообще не найдено) являются равнозначными, и превратятся в !0 = 1 = true, !false = true.
Тобишь: это не array_search() игнорирует 0-ой элемент массива, это вы с помощью операнда ! игнорируете результат с вполне валидным значением 0.
Пробуйте передавать на сайт вообще все заголовки, в том числе Referer и User-Agent. И возможно в момент, когда перестаёт пускать - в браузере появляется ещё один дополнительный заголовок или параметр...
Ну так смотрите error_log вашего HTTP-сервера, возможно там ошибки PHP сыпятся. Например по поводу ограничений safe_mode. Ну и в консоль браузера загляните, на предмет работоспособности AJAX-кода и корректности приходящих из PHP данных.
Тут бы ещё пояснить, что во время перенаправления вывода обе команды запускаются одновременно, и вторая команда пытается создать поддиректорию 2, когда директория 1 ещё не существует. Поэтому и ошибка создания.
P.S. Если команды написать через точку с запятой ";" вместо pipe "|" - тоже отработает корректно (если не случится ошибки создания директории 1, конечно).