php shell_exec在后台一次执行多个命令

Ksz*_*ili 5 php linux plesk

我在php/linux中遇到问题,如下所述:

我必须通过shell_exec执行linux命令(plesk cli命令订阅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." &");
Run Code Online (Sandbox Code Playgroud)

但是php会等待回应.

不知怎的,我需要睡觉执行linux命令,所有这一切都必须在bg.中运行,并且不要等待响应.

谢谢

Mat*_*Mat 8

您应该尝试使用exec而不是shell_exec,并将所有输出重定向到/dev/null.就像是:

exec("(sleep 4 && ... --webspace-off ".$domain_name.") > /dev/null 2>&1 &");
Run Code Online (Sandbox Code Playgroud)

(注意()命令周围:你需要捕获两者sleep和你的包装器的输出流.)

编辑:并真正确保您验证$domain_name.没有验证和

$domain_name = "; rm -rf ...";
Run Code Online (Sandbox Code Playgroud)

你有麻烦了...