2011-05-31 30 views
-1

我想在使用公钥(不是密码)进行身份验证之后将文件放到STFP服务器上。 命令行中的手动SFTP工作。 首先,我不能使用phpseclib。在我的php.ini 'allow_url_fopen选项'= 1在SFTP服务器上放置一个文件

stream_get_wrappers()给我:HTTPS,FTPS,compress.zlib,compress.bzip2,PHP文件,水珠,数据,HTTP,FTP,药业,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

您是否使用与您说它在命令行上可用的用户相同的用户来执行此代码?如果您通过网络服务器执行此页面,它将在Web服务器进程的相同用户(在debian/ubuntu中为www-data或rhel/centos中的httpd)执行。 – 2011-05-31 10:39:57

回答

1

phpseclib使用其allow_url_fopen选项应该不影响的fsockopen。 allow_url_fopen用于file()和file_get_contents()之类的东西 - 不适用于fsockopen()。

+0

我无法使用phpseclib。 – 2011-06-02 13:00:37

2

简单的错误:您忘记了$resource之间的/ & $dest。所以,这将工作:

$sftpStream = fopen('ssh2.sftp://'.$sftp.'/'.$dest, 'w'); 

..提供您有文件系统的根的写入权限。除了在SSH连接上执行cwd之外,您可能还需要给完整文件路径,我还没有找到一种方法在连接后将文件放入“默认”目录。

相关问题