php system() 命令文件由于密码中的“&”

php system() command files due to '&' in password

我是运行以下命令:

$cmd = escapeshellcmd( "echo '$password' | sudo -S mv \"$old\" \"$new\" " );
system( $cmd, $out );

这在 $password 不包含 & 时有效,但如果包含则失败。 我如何才能允许 & 和密码中的任何其他特殊字符?

谢谢

不要在整个命令上使用 escapeshellcmd(),在单个参数上使用 escapeshellarg()

$password_esc = escapeshellarg($password);
$cmd = "echo $password_esc | sudo -S mv '$old' '$new'";
system($cmd, $out);

您不需要在 $password_esc 周围加上引号,因为 escapeshellarg() 添加了它们。