将文件放在SFTP服务器上

问题描述

| 我想在使用公共密钥(而非密码)进行身份验证后将文件放在STFP服务器上。 在命令行中手动SFTP可以工作。 首先,我不能使用PHPseclib。 \'allow_url_fopen \'= 1在我的PHP.ini中 stream_get_wrappers()给我:https,ftps,compress.zlib,compress.bzip2,PHP文件,glob,数据,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.     

解决方法

        一个简单的错误:您忘记了
$resource
$dest
之间的
/
。因此,这将起作用:
$sftpStream = fopen(\'ssh2.sftp://\'.$sftp.\'/\'.$dest,\'w\');
..前提是您对文件系统的根拥有写访问权。除了在ssh连接上执行
cwd
之外,您可能还需要提供文件的完整路径。我还没有找到一种在连接后将文件放在\'default \'目录中的方法。     ,        phpseclib使用fsockopen,allow_url_fopen不会生效。 allow_url_fopen用于file()和file_get_contents()之类的东西-不适用于fsockopen()。