У меня проблема в php / linux, описанная ниже:
Я должен выполнить команду linux через shell_exec (plesk cli command subscription webspace-off).
Проблема в том, что я делаю это с php, но он перезапускает apache, что приводит к пустой странице, а apache перезапускается.
Чтобы избавиться от проблемы, я должен вызвать этот shell_exec в фоновом режиме, с задержкой (ожидаемый результат: загрузка веб-страницы и через 4 секунды запускает сценарий linux).
Я сделал несколько попыток:
shell_exec("sleep 4 && /var/www/vhosts/site.com/httpdocs/wrapper2 3 --webspace-off ".$domain_name." &");
но php будет ждать ответа.
Как-то мне нужно спать выполнение команды linux, и все это должно выполняться в bg. И не ждать ответа.
благодаря
Вы должны попробовать использовать exec
а не shell_exec
, и перенаправить весь вывод на /dev/null
. Что-то вроде:
exec("(sleep 4 && ... --webspace-off ".$domain_name.") > /dev/null 2>&1 &");
(Обратите внимание на ()
вокруг команд: вам нужно поймать выходной поток как sleep
и вашей обертки.)
Изменить: и убедитесь, что вы проверяете имя $domain_name
. Без проверки и с
$domain_name = "; rm -rf ...";
ты в беде…