一尘不染

为什么php命令`exec(“ service apache2 restart”);`在ubuntu上不起作用?

linux

我需要使用apache配置的php在我的Web服务器上执行一些命令。

exec("service apache2 restart", $output);
print_r($output);

输出:

Array (
    [0] =>  * Restarting web server apache2
    [1] => Action 'start' failed.
    [2] => The Apache error log may have more information.
    [3] =>    ...fail! 
)

我的猜测是因为我的ubuntu上有php权限!你有什么建议?


阅读 250

收藏
2020-06-07

共1个答案

一尘不染

您需要运行:

visudo

检查你是否有一条线像

Host_Alias LOCAL=192.168.0.1

在文件顶部添加您自己的本地IP,然后添加一行

www-data       LOCAL=NOPASSWD:/usr/bin/service

最后在您的PHP文件中:

exec("/usr/bin/sudo /usr/bin/service apache2 restart");

(您正在尝试通过Web重新启动apache,也许您不知道webmin界面?我认为有比sudo方法更好的解决方案。授权www-
data停止,启动(…)全部不是一件好事。服务。请更好地解释您为什么要重新启动apache;))

2020-06-07