[英]Put a file on a SFTP Server
我想在使用公钥(不是密码)进行身份验证后将文件放在 STFP 服务器上。 命令行中的手动 SFTP 有效。 首先,我不能使用phpseclib。 'allow_url_fopen' = 1 在我的 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
一切正常(按顺序: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:
任何想法?
谢谢你。
简单错误:您忘记了$resource
和$dest
之间的/
。 因此,这将起作用:
$sftpStream = fopen('ssh2.sftp://'.$sftp.'/'.$dest, 'w');
.. 前提是您对文件系统的根目录具有写入权限。 您可能需要提供文件的完整路径,除了在 ssh 连接上执行cwd
之外,我还没有找到在连接后将文件放入“默认”目录的方法。
phpseclib 使用 fsockopen ,其中 allow_url_fopen 不应该影响。 allow_url_fopen 适用于 file() 和 file_get_contents() - 不适用于 fsockopen()。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.