Я пытаюсь прочитать каталог и хочу получить последние файлы с текущей даты.
Когда я вставил 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/');
Как указано в документации, у вас в $ iterator есть PHP итератор,
так что вам нужно использовать iterator_count:
$anzahl = iterator_count($iterator);
Это больше не будет работать, если вы используете 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