2011-05-31 64 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之外,您可能還需要給完整文件路徑,我還沒有找到一種方法在連接後將文件放入「默認」目錄。

相關問題