0

我正在尝试将 POST 变量放入我的 $ssh->exec 命令中未使用 post 变量。我希望在 adduser 中使用 $domain 和 $password,如下所示。

我在 centos 7 服务器 php 7.3 上运行它,我可以回显变量,但我不能在命令中使用它。

我可以回显 $domain 和 $password。

一个示例帖子是

用户名:adada.com 和密码:passwordwe3

输入字符串的这个命令运行良好。

set_include_path(get_include_path() . PATH_SEPARATOR . '/var/www/html/phpsec');
include ('Net/SSH2.php');
$ssh = new Net_SSH2('hostname');
if (!$ssh->login('username', 'password')) {
exit('Login Failed');
}

$domain = $_POST['domain'];
$password = $_POST['password'];

echo $ssh->exec('adduser $domain -m -p $password -d /var/www/shared/$domain/public_html');
echo $ssh->exec('su $domain');
echo $ssh->exec('pwd');
die();

表格中的错误如下。adduser: 无效的用户名 '/var/www/shared//public_html' /root

4

1 回答 1

0
echo $ssh->exec('adduser $domain -m -p $password -d /var/www/shared/$domain/public_html');
echo $ssh->exec('su $domain');

当您应该使用双引号时,您正在使用单引号。尝试这个:

echo $ssh->exec("adduser $domain -m -p $password -d /var/www/shared/$domain/public_html");
echo $ssh->exec("su $domain");

此外,通过escapeshellarg传递这些变量可能是一个好主意。

于 2019-05-23T03:21:02.007 回答