使用Gaufrette和Phpseclib的SFTP无法读取文件

时间:2016-10-06 09:08:58

标签: symfony sftp phpseclib gaufrette

我正在尝试从Symfony2命令获取SFTP服务器中的json文件。我使用KnpGaufretteBundlephpseclib-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

这是输出: Console output

基础文件夹的权限:

-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功能的警告 enter image description here

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

阅读该文件

1 个答案:

答案 0 :(得分:1)

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

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