gpt4 book ai didi

php - 通过 PHP 脚本重启 apache2

转载 作者:行者123 更新时间:2023-12-04 18:26:09 24 4
gpt4 key购买 nike

我想在使用以下代码加载页面时重新启动 apache2:

exec('/etc/init.d/apache2 reload', $output, $return);
if(!$return) {
$result = "<script>console.log('can not restart apache2');</script>";
echo $result;
echo $output;
} else {
$result = "<script>console.log('restart apache2 successfuly');</script>";
echo $result;
}

然后在文件 etc/sudoers 中添加以下行:

Cmnd_Alias      RESTART_APACHE = /etc/service apache2 restart
www-data ALL=NOPASSWD: RESTART_APACHE

但是结果返回cannot restart apache2

我做错了什么吗?

最佳答案

@tuanptit
<?php echo shell_exec('service httpd restart &'); ?>

虽然这样的脚本试图执行此操作,但您可能会遇到权限问题。不过,听起来您正处在一个完整的开发环境中,因此为它授予更高的权限对您来说无关紧要。

但是,恕我直言,处理此问题的最佳方法是为 Apache 运行的用户提供通过 sudo command 重新启动 Apache 的权限。 .

您需要编辑/etc/sudoers 文件并添加类似于以下内容的行:

Cmnd_Alias      RESTART_APACHE = /sbin/service apache2 restart

www-data ALL=NOPASSWD: RESTART_APACHE

您可能需要 nobody而不是 www-data ,这取决于运行 Apache 的用户。在 Debian 上,Apache 通常在用户 www-data 下运行,而在 Red Hat 下,Apache 通常在用户 nobody 下运行。此外,/sbin/service apache2 restart可能需要 /sbin/service apache restart或者也许 /sbin/service httpd restart .一切都取决于您的系统配置。

完成后,您可以在 PHP 中使用代码:

exec('/sbin/service apache2 restart');

(如果重启 Apache 的命令在您的服务器上不同,显然会更改它。)

请注意:这很可能被视为安全风险!如果你这样做,你就完全信任 sudo二进制,service二进制文件,你的系统要遵守规则,不要让 Apache/PHP 进程获得 root shell。我强烈建议询问 http://serverfault.com了解你在这里所做的事情的含义。

关于php - 通过 PHP 脚本重启 apache2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39241958/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com