#php #ftp
#php #ftp
Вопрос:
Я использую класс DirectoryIterator для перечисления содержимого ftp: $ a = новый DirectoryIterator (‘ftp://user:password@host ‘);
Если при входе в систему используется символ «@», я получаю сообщение об ошибке: не удалось открыть каталог: сбой операции
Как я могу избежать @ symbol при входе в систему?
Я пытаюсь: @, @
Ответ №1:
RFC1738 предписывает, чтобы специальные символы типа @
были urlencoded в ftp:// scheme. Таким образом, использование @
вместо @ во фрагменте пароля было бы правильным.
Но вы просто хотели user:password@
префикс перед именем хоста. Их не нужно экранировать. И это уже изначально поддерживается оболочкой ftp fopen url:
$d = opendir("ftp://anonymous:nopwd@ftp.kernel.org/pub/");
print readdir($d);
Приведенный выше ftp: // url тоже работает для меня с DirectoryIterator
, но выдает какое-то неясное предупреждение и разные результаты. Поэтому я бы сначала протестировал собственные функции.
Ответ №2:
Я не уверен, что вы можете использовать его DirectoryIterator
в качестве FTP
клиента
Возможно, вы захотите узнать, как использовать ftp_rawlist для получения списка данного каталога