2011-06-19 66 views
5

一次多个命令我在PHP/Linux的一个问题,说明如下:PHP了shell_exec在背景

我有通过了shell_exec(的plesk CLI命令订阅的网络空间 - 关闭)来执行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。, 中运行,并且不要等待响应。

感谢

回答

7

你应该尝试使用exec而不是shell_exec,所有输出重定向到/dev/null。喜欢的东西:

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

(请注意,命令周围的():你需要她俩都sleep和包装器的输出流)

编辑:并真正确保您验证$domain_name。未经验证,并与

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

你就麻烦了......

+0

哦不错,它为我的感谢 – Tech4Wilco