Я запускаю следующую команду:
$cmd = escapeshellcmd( "echo '$password' | sudo -S mv \"$old\" \"$new\" " );
system( $cmd, $out );
Это работает, когда $password
не содержит &
, но не работает, если содержит.
Как я могу разрешить &
и любые другие специальные символы в пароле?
Спасибо
🤔 А знаете ли вы, что...
PHP позволяет встраивать код в HTML-страницы с использованием специальных тегов <?php ?>.
Не используйте escapeshellcmd()
для всей команды, используйте escapeshellarg()
для отдельных аргументов.
$password_esc = escapeshellarg($password);
$cmd = "echo $password_esc | sudo -S mv '$old' '$new'";
system($cmd, $out);
Вам не нужны кавычки вокруг $password_esc
, потому что escapeshellarg()
добавляет их.