2012-11-21 5 views
3

업로드 - SFTP 클래스 등과 같은 파일을 업로드하려고 -PHP SFTP 단순 파일 내가 phpseclib 사용하고

$sftp = new Net_SFTP('mydomain.com'); 
if (!$sftp->login('user', 'password')) { 
    exit('Login Failed'); 
} 
$sftp->put('/some-dir/',$fileTempName); 

파일 그러나 some-dir 내부에 업로드되는 것이 아니라, 이전에 하나의 디렉토리를 업로드 (시작 디렉토리에 루트라고 말할 수 있습니다). 이것은 나를 미치게 만들었습니다. some-dir/ 또는 /some-dir 또는 /some-dir/의 모든 조합을 시도했지만 파일이 업로드되지 않습니다.

+0

먼저 SFTP의 현재 작업 디렉토리를 확인합니다. $ sftp-> pwd()를 사용하십시오. 그러면 파일 업로드에 올바른 경로를 제공 할 수 있습니다. 둘째, 파일 경로를 제공해야합니다. 예, $ sftp-> put ('/ some-dir/filename_remote', 'localfile'); –

+0

$ sftp-> put ('/ some-dir/filename_remote', 'localfile', NET_SFTP_LOCAL_FILE) 파일을 업로드합니다. 내 이전 코멘트에 NET_SFTP_LOCAL_FILE이 (가) 누락되어 미안합니다. –

답변

2

나는 당신의 풋이 당신이하고 있다고 생각하는 것을한다고 생각하지 않습니다. 문서에 따르면 파일을 보내려는 디렉토리로 전환하려면 Net_SFTP::chdir('/some-dir/')을 수행해야합니다. put($remote_file, $data) (remote_file은 파일 이름이고 $data은 실제 파일 데이터입니다).

예제 코드 :

<?php 
include('Net/SFTP.php'); 

$sftp = new Net_SFTP('www.domain.tld'); 
if (!$sftp->login('username', 'password')) { 
    exit('Login Failed'); 
} 

echo $sftp->pwd() . "\r\n"; 
$sftp->put('filename.ext', 'hello, world!'); 
print_r($sftp->nlist()); 
?> 
+0

감사합니다. 그래서 명확히하기 위해 (다른 누구 에게든이 문제가있는 경우). $ sftp-> put first param은 서버에서 생성 (업로드) 될 파일 이름이고 두 번째 param은 데이터 (문자열 텍스트 또는 파일 핸들)입니다. 특정 디렉토리에 업로드하려면 Net_SFTP :: chdir ('somedir')을 사용하여 put을 사용하기 전에 해당 디렉토리로 변경하십시오. – user1551120