-1

我和我的脑筋急转弯......我正在构建一个邮件服务器安装脚本,并且在我只是为了覆盖我的基础之前,我已经想到了一些我想问的问题。我知道如何将 php 与 shell_exec 命令和 proc_open 命令一起使用来运行 sudo 和 apt-get 等 shell 命令,但我不知道如何进行要求用户输入的安装?我的示例是 mysql 服务器安装调用的一部分,当您通过命令行安装它时,它会要求设置 mysql 管理员用户的密码。我的脚本以表单的形式从用户那里获取该信息,并且可以将数据传递到其他页面,但是我如何将其传递给 shell?

我知道该怎么做:

$mySql_password = $_POST['mysql_password'];
$output = shell_exec("apt-get -y install <package-id>");

甚至:

$mySql_password = $_POST['mysql_password'];
$output = shell_exec("apt-get --force-yes install <package-id>");

将密码设置为变量后,我将如何将密码传递给它?请记住,此脚本将从服务器的桌面(如果他们有桌面)或通过 Web 浏览器运行,并且该脚本最后将具有自毁模式以擦除安装脚本以防止有人忘记它。ssl 也将被推荐为预安装清单。

4

1 回答 1

0

环顾四周(谷歌“无人值守 MySQL 安装”或这些行中的其他内容)后,应该对您有所帮助的是DEBIAN_FRONTEND=noninteractive.

试试这个在没有密码的情况下安装,然后设置它:

<?php

shell_exec('echo '.$rootPassword.' | DEBIAN_FRONTEND=noninteractive sudo -S aptitude install -q -y mysql;
mysql -uroot -e "UPDATE mysql.user SET password=PASSWORD("'.$mysqlPassword.'") WHERE user='root'; FLUSH PRIVILEGES;');

?>

或者,debconf-set-selections应该允许您设置默认密码,以便直接安装 mysql。

于 2012-11-14T06:37:31.297 回答