5

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

我必须通过 shell_exec(plesk cli command subscription webspace-off)执行 linux 命令。

问题是当我从 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. 中运行,并且不要等待响应。

谢谢

4

1 回答 1

9

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

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

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

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

$domain_name = "; rm -rf ...";

你有麻烦了...

于 2011-06-19T13:46:35.373 回答