我在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." &");
但是php会等待响应。
不知怎的,我需要睡觉执行linux命令,所有这一切都必须在bg中运行。 并且不要等待回应。
由于
答案 0 :(得分:7)
您应该尝试使用exec
而不是shell_exec
,并将所有输出重定向到/dev/null
。类似的东西:
exec("(sleep 4 && ... --webspace-off ".$domain_name.") > /dev/null 2>&1 &");
(注意命令周围的()
:你需要捕获sleep
和你的包装器的输出流。)
修改:并使真实确保您验证$domain_name
。没有验证和
$domain_name = "; rm -rf ...";
你有麻烦......