将文件放在 SFTP 服务器上
我想在使用公钥(而不是密码)进行身份验证后将文件放在 STFP 服务器上。 命令行中的手动 SFTP 有效。 首先,我不能使用phpseclib。 我的 PHP.ini stream_get_wrappers() 中的 'allow_url_fopen' = 1
给了我: https,ftps,compress.zlib,compress.bzip2,php,file,glob,data,http,ftp,phar,ssh2.shell,ssh2.exec, ssh2.tunnel、ssh2.scp、ssh2.sftp、zip
一切正常(按顺序:ssh2_connect、ssh2_auth_pubkey_file、ssh2_sftp) 但这段代码不起作用:
$sftp = ssh2_sftp($connection);
$dest = 'test.txt';
--> $sftpStream = fopen('ssh2.sftp://'.$sftp.$dest, 'w'); <---
PHP Warning: fopen(ssh2.sftp://Resource id #32test.txt): failed to open stream:
有什么想法吗?
谢谢 S。
I'd like to put a file on a STFP server after a Authentification with a Public key (not password).
Manual SFTP in command line works.
First of all, I can't use phpseclib.
'allow_url_fopen' = 1 in my PHP.ini
stream_get_wrappers() gives me: https,ftps,compress.zlib,compress.bzip2,php,file,glob,data,http,ftp,phar,ssh2.shell,ssh2.exec,ssh2.tunnel,ssh2.scp,ssh2.sftp,zip
everything work (in order: ssh2_connect, ssh2_auth_pubkey_file, ssh2_sftp)
but this code doesn't work:
$sftp = ssh2_sftp($connection);
$dest = 'test.txt';
--> $sftpStream = fopen('ssh2.sftp://'.$sftp.$dest, 'w'); <---
PHP Warning: fopen(ssh2.sftp://Resource id #32test.txt): failed to open stream:
Any idea ?
Thank you
S.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
简单错误:您忘记了
$resource
和$resource
之间的/
。$dest
。因此,这将起作用:..前提是您对文件系统的根目录具有写访问权限。除了在 ssh 连接上执行 cwd 之外,您可能还需要提供文件的完整路径,我还没有找到将文件放入连接后的“默认”目录。
Simple error: you forgot a
/
between$resource
&$dest
. So, this will work:.. provided you have write access on the root of your filesystem. You may be required to give the full path to the file, aside from executing
cwd
on an ssh-connection I've yet to find a method to put a file in the 'default' dir after connecting.phpseclib 使用 fsockopen ,allow_url_fopen 不应该起作用。 allow_url_fopen 适用于 file() 和 file_get_contents() 之类的东西 - 不适用于 fsockopen()。
phpseclib uses fsockopen which allow_url_fopen shouldn't effect. allow_url_fopen is for things like file() and file_get_contents() - not for fsockopen().