我希望在使用公钥(不是密码)进行身份验证后将文件放在STFP服务器上。 命令行中的手动SFTP有效。 首先,我不能使用phpseclib。 我的PHP.ini中的'allow_url_fopen'= 1
stream_get_wrappers()给了我:https,ftps,compress.zlib,compress.bzip2,php,file,glob,data,http,ftp,phar,ssh2.shell,ssh2.exec,ssh2.tunnel,ssh2.scp ,ssh2.sftp,拉链
一切正常(按顺序: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上。
答案 0 :(得分:2)
简单错误:您忘记/
和$resource
之间的$dest
$sftpStream = fopen('ssh2.sftp://'.$sftp.'/'.$dest, 'w');
。所以,这将有效:
cwd
..如果您对文件系统的根目录具有写访问权限。您可能需要将完整的路径提供给该文件,除了在ssh-connection上执行{{1}}之外我还没有找到将文件放入'default'的方法dir连接后。
答案 1 :(得分:1)
phpseclib使用fsockopen,allow_url_fopen不应该生效。 allow_url_fopen用于file()和file_get_contents()之类的东西 - 不适用于fsockopen()。