如何创建用于安装 apache2 的 PHP 脚本?
完成后,我还要查看已安装的版本。
这是我尝试过的:
d3.select
答案 0 :(得分:0)
我想阐明您的脚本存在的多个问题。首先,您的脚本中有很多语法错误。
1:例如,您尚未使用else
关闭}
病情的一部分。因此,您的浏览器将显示类似localhost is currently unable to handle this request.
的内容。
2:接下来,脚本的最后三行完全没有必要,它不会引起错误,但是会显示在输出中,这可能会改变您的思维方式什么错误。
3:您没有得到输出,因为命令末尾没有2>&1
。在命令末尾添加它之后,您将像这样开始获取权限错误。
警告:apt没有稳定的CLI界面。在脚本中谨慎使用。
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
现在,此错误意味着您没有足够的权限来运行命令以在计算机上安装某些东西。您可以通过多种方式解决此权限问题。如果您以www-data
的身份运行脚本,请使用以下命令将用户添加到sudo
组。
usermod -aG sudo www-data
将用户添加到组后,可以使用sudo
运行命令,并且可以完美地运行此脚本。这是在首先解决权限问题之后最终脚本的样子。
<?php
if (!empty($_GET['act'])) {
$output = shell_exec('sudo apt install nodejs 2>&1');
echo "<pre>$output</pre>";
} else {
$output = shell_exec('nodejs -v');
echo "<pre>$output</pre>";
}
?>
<form action="so1.php" method="get">
<input type="hidden" name="act" value="run">
<input type="submit" value="check version">
</form>
因此,这是使脚本执行命令以安装软件包的方法。如果您还有其他疑问,请告诉我。
更新:我知道用sudo
执行脚本是“有害的”和“不推荐的”。但这是使此脚本起作用的一种方式。 而且,如果您要安装更大的软件包,请在-y
之后的命令末尾添加nodejs
标志,以预先选择安装或不安装软件包。