为安装创建 php 脚本
Create a php script for installation
如何创建 PHP 脚本来安装 apache2?
我也想看看安装完成后的版本。
这是我尝试过的:
<?php
if (!empty($_GET['act'])) {
$output = shell_exec ('apt install nodejs');
echo "<pre>$output</pre>";
} else {
//$output = shell_exec('nodejs -v');
//echo "<pre>$output</pre>";
?>
<form action="script.php" method="get">
<input type="hidden" name="act" value="run">
<input type="submit" value="check version">
</form>
?php
}
?>
我想阐明您的脚本存在的多个问题。首先,你的脚本中有很多语法错误。
1: 例如,您尚未使用 }
关闭 else
部分条件。因此,您的浏览器将显示类似 localhost is currently unable to handle this request.
.
的内容
2: 现在是另一件事,脚本的最后 3 行完全没有必要,它不会导致错误,但它会显示在输出中,这可能改变你认为错误是什么的方式。
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
执行脚本是 "Harmful" 和 "Not recommended"。但这是使该脚本起作用的一种方法。 而且,如果你想安装一个更大的包,在命令的末尾添加 -y
标志,紧跟在 nodejs
之后,以便预先 select安装或不安装软件包的选择。
如何创建 PHP 脚本来安装 apache2?
我也想看看安装完成后的版本。
这是我尝试过的:
<?php
if (!empty($_GET['act'])) {
$output = shell_exec ('apt install nodejs');
echo "<pre>$output</pre>";
} else {
//$output = shell_exec('nodejs -v');
//echo "<pre>$output</pre>";
?>
<form action="script.php" method="get">
<input type="hidden" name="act" value="run">
<input type="submit" value="check version">
</form>
?php
}
?>
我想阐明您的脚本存在的多个问题。首先,你的脚本中有很多语法错误。
1: 例如,您尚未使用 }
关闭 else
部分条件。因此,您的浏览器将显示类似 localhost is currently unable to handle this request.
.
2: 现在是另一件事,脚本的最后 3 行完全没有必要,它不会导致错误,但它会显示在输出中,这可能改变你认为错误是什么的方式。
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
执行脚本是 "Harmful" 和 "Not recommended"。但这是使该脚本起作用的一种方法。 而且,如果你想安装一个更大的包,在命令的末尾添加 -y
标志,紧跟在 nodejs
之后,以便预先 select安装或不安装软件包的选择。