为什么php命令`exec("service apache2 restart");`不能在ubuntu上工作?

EBA*_*BAG 6 php linux apache ubuntu

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

exec("service apache2 restart", $output);
print_r($output);
Run Code Online (Sandbox Code Playgroud)

输出:

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

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

Gil*_*not 8

你需要运行:

visudo
Run Code Online (Sandbox Code Playgroud)

检查你有一条线

Host_Alias LOCAL=192.168.0.1 
Run Code Online (Sandbox Code Playgroud)

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

www-data       LOCAL=NOPASSWD:/usr/bin/service
Run Code Online (Sandbox Code Playgroud)

最后在你的PHP文件中:

exec("/usr/bin/sudo /usr/bin/service apache2 restart");
Run Code Online (Sandbox Code Playgroud)

(你正在试图通过网络重新启动Apache,也许你不知道webmin的界面呢?我认为有更佳的解决方案比这个须藤方式.这不是授权www数据停止,启动(......一件好事)的所有服务.更好地解释你为什么要重启apache;))