ОК, у вас есть несколько возможностей расширения оболочки в зависимости от того, как вы это делаете.
Во-первых, вы используете system () со строкой.Это сломает все ваши пути на космические символы.Вы можете решить эту проблему, используя систему в виде списка
system('ssh', '-i', 'id_pub', $ssh_addr, 'ls', $remote_dir)
Теперь у нас все еще есть проблема, так как ssh запустит удаленный код на удаленном сервере в оболочке с расширением оболочки, что приведет к пробелу в пробелах снова
Так что вам нужно поместить $ remote_dir внутри '
символов, чтобы не дать удаленной оболочке разбить путь: давая
system('ssh', '-i', 'id_pub', $ssh_addr, 'ls', "'$remote_dir'")
Надеюсь, это поможет / работает
Обратите внимание, что, как сказали ниже комментаторы, это предполагает, что в $ remote_dir нет символов '
.Вам нужно либо экранировать, либо анализировать $ remote_dir, чтобы убедиться, что вы не получите путь, похожий на /file.txt'; rm -rf / #
, который попытается удалить каждый файл в удаленной системе