带有 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"))
我正在尝试通过 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"))