Symfony-Finder не может открыть каталог

Я пытаюсь прочитать каталог и хочу получить последние файлы с текущей даты.

Когда я вставил URL в браузер, я получил результат всех файлов, которые находятся в ftp-каталоге.

Итак, у меня есть доказательство того, что параметр ftp-connection все еще работает.

введите описание изображения здесь

Когда я пытаюсь запустить следующую функцию, я получаю сообщение об ошибке

RecursiveDirectoryIterator :: __ конструкт (FTP: //…@example.com: 4242): не удалось открыть каталог: операция не удалась

Вот исключение из Symfony:

введите описание изображения здесь

/**
* @Route("/download", name="getfile")
*/
public function getFileWithFtp()
{

$host = "example.com";
$username = "username";
$userpass = "userpass";
$port = 4242;


$url = 'ftp://' . $username . ':' . $userpass . '@' . $host . ':' . $port .'/';
$datum = date('Y-m-d');

$finder = new Finder();
$iterator = $finder
->files()
->in($url)
->name('*BEHWN.TXT')
->date($datum);

$anzahl = count($iterator);

return $this->render('ftp/index.html.twig', [
'controller_name' => 'FtpController',
'url' => $url,
'anzahl' => $anzahl
]);
}

Когда я открываю URL с файлом file_gets_content ($ url. «Filename.txt»), я получаю содержимое без ошибок.

Только кажется, что я не использую Finder от Symfony не правильно.

Мой текущий Symfony — 4.1.4, и я очистил кеш, а также вручную удалил файлы кеша.

Спасибо за каждый отзыв

Вот ссылка на symfony-finder-component:
https://symfony.com/doc/current/components/finder.html

Поскольку Finder использует итераторы PHP, вы можете передать любой URL с поддерживаемым протоколом:

Вот часть кода FTP из документации:

// always add a trailing slash when looking for in the FTP root dir
$finder->in('ftp://example.com/');

// you can also look for in a FTP directory
$finder->in('ftp://example.com/pub/');

0

Решение

Как указано в документации, у вас в $ iterator есть PHP итератор,
так что вам нужно использовать iterator_count:

$anzahl =  iterator_count($iterator);
0

Другие решения

Это больше не будет работать, если вы используете Symfony v3.4.7 и выше.

Есть проблема:
https://github.com/symfony/symfony/issues/27423

Я сделал исправление, но это займет некоторое время, пока это не объединится, я думаю
https://github.com/symfony/symfony/pull/28604

Резюме:

«В Finder […] был выпущен, который должен удалить дублирующие косые черты из имен путей.
Однако это приводит к ошибке при поиске файлов в корневом каталоге FTP ».

«В результате рабочий код до v3.4.7 приводит к нарушению кода после v3.4.7»

Это метод испортить вещи, включая мое исправление
https://github.com/symfony/symfony/blob/0670c48477b3d88787b6fe0dec168c5c8ae49c66/src/Symfony/Component/Finder/Finder.php#L741

0

По вопросам рекламы [email protected]