我尝试读取目录并想从当前日期获取最后一个文件。
当我将 url 放入浏览器时,我得到了 ftp 目录中所有文件的结果。
所以我有证据证明 ftp-connection 参数仍然有效。
当我尝试启动以下功能时,出现错误
RecursiveDirectoryIterator::__construct( ftp://...@example.com:4242 ): 未能打开 dir: 操作失败
这是 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
]);
}
当我使用 file_gets_content($url."filename.txt") 打开带有文件的 url 时,我得到的内容没有错误。
只是似乎我不使用 Symfony 的 Finder 不正确。
我当前的 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/');