问题描述
|
我想在使用公共密钥(而非密码)进行身份验证后将文件放在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()。