无法使用PHP ssh2_exec()
执行具有超级用户优先级的命令如果我想在远程Linux机器上的/ var / www内创建一个文件夹test_folder,下面的代码和ssh命令似乎是正确的,但由于缺少超级用户优先权,我无法创建文件夹。我对此感到困惑的是,我已经包含了用户名和密码凭据,但我仍无法执行该命令。
$con = new SSH2SFTP($addr,
new SSH2Password($user, $pass),
22);
$cmd = "sudo mkdir -p /var/www/test_folder";
$stream = ssh2_exec($con, $cmd);
stream_set_blocking($stream, true);
fclose($stream);
任何帮助将不胜感激。感谢。
答案 0 :(得分:3)
您的方法大多是正确的,但想象一下,在您进入远程计算机后,您正在输入linux命令。您第一次使用'sudo'时仍需输入密码。
因此,您可以按如下方式修改命令:
$cmd = "echo '" . $pass . "' | sudo -S " . $cmd;
您的代码将是这样的:
$con = new SSH2SFTP($addr,
new SSH2Password($user, $pass),
22);
$cmd = "mkdir -p /var/www/test_folder";
$cmd = "echo '" . $pass . "' | sudo -S " . $cmd;
$stream = ssh2_exec($con, $cmd);
stream_set_blocking($stream, true);
fclose($stream);
希望它有所帮助。