繁体   English   中英

将文件放在 SFTP 服务器上

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM