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()
添加了它们。
我是运行以下命令:
$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()
添加了它们。