использование @ symbol с потоком ftp в DirectoryIterator

#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 для получения списка данного каталога