RFC1738 указывает, что специальные символы, такие как @
, должны быть закодированы в схеме ftp: //.Поэтому правильное использование %40
вместо @ в пароле.
Но вы просто хотели использовать префикс user:password@
перед именем хоста.Этим не нужно убегать.И он уже изначально поддерживается оболочкой ftp fopen url:
$d = opendir("ftp://anonymous:nopwd@ftp.kernel.org/pub/");
print readdir($d);
Выше ftp: // url также работает для меня с DirectoryIterator
, но дает некоторые неясные предупреждения и другие результаты,Поэтому сначала я протестировал бы с нативными функциями.