带有 Gaufrette 和 Phpseclib 的 SFTP 无法读取文件

SFTP with Gaufrette and Phpseclib can't read files

我正在尝试通过 Symfony2 命令在 SFTP 服务器中获取 json 文件。我使用 KnpGaufretteBundle and the phpseclib-sftp 适配器。

我的电脑上有一个 运行 SFTP 服务器,我可以将它与 filezilla 和 list/read 文件连接,所以我认为没有权限问题。

问题是连接工作,我可以列出文件

$sftpService->getExec()->run("ls")

但我不能

$sftpService->getSftp()->listDirectory(".")

我可以创建目录但不能列出它..而且我无法读取文件。这是我的测试代码:

$sftpService = $this->getContainer()->get("phpseclib_sftp");
dump($sftpService->getExec()->run("ls")); //file "test.txt" exist
$sftp = $sftpService->getSftp();
dump($sftp->exists("test.txt")); //false
dump($sftp->read("test.txt")); //false
dump($sftp->mkdir("testMkdir")); //true
dump($sftpService->getExec()->run("ls")); //the new directory exist
dump($sftp->listDirectory("testMkdir")); //false

这是输出:

以及基本文件夹的权限:

-rwxrwxrwx  1 sftp_user  staff  11  6 oct 10:31 test.txt
drwxr-xr-x  2 sftp_user  staff  68  6 oct 10:56 testMkdir

这里是 read 函数的警告

编辑:我可以用 $sftpService->getExec()->run("cat test.txt"));

读取文件

好的,似乎对于 SFTP url (ssh2.STFP://...) 我需要使用绝对路径,我的 ftp 用户的基本文件夹不起作用,所以它正在与:

$sftp->read($sftp->realpath("test.txt"))