2013-08-20 1 views
0

phpseclib을 사용하여 SFTP 서버의 모든 로그를 삭제하려고했습니다.SFTP는 와일드 카드 문자로 파일을 제거합니다.

코드는 간단하다 :

$sftp = new Net_SFTP($host_name); 
$sftp->login($username, $password); // login is successful 
$sftp->chdir('/somefolder'); 
if(!$sftp->delete('*.log')) { 
    $logger->error('Cannot remove logs'); 
} 

로그는 "로그를 제거 할 수 없습니다"보여줍니다.

그러나, 나는 쉘에서 SFTP 명령을 사용하여, 그것을 작동 :

$ sftp [email protected] 
Password: (type in my password) 
sftp> cd /somefolder 
sftp> rm *.log 
Removing xxx.log 
Removing yyy.log 
sftp> ls 
(no more *.log) 
sftp> exit 

는 phpseclib 기능은 와일드 카드 문자를 지원 삭제합니까? 그렇지 않다면, 어떤 대안?

답변

1
Does the phpseclib delete function supports wildcard character ? If not, any alternatives ? 

현재 없음. 나는 $sftp->nlist()을 할 수 있고 nlist에 의해 반환 된 각 행에 preg_match를 할 수 있다고 생각합니다. 일치하면 삭제하십시오. 그렇지 않으면 그대로 두십시오.

+0

그 예에서는 언급하지 않았다. – Raptor

+0

그 기대를하는 것이 무리라고 생각합니까? ftp_delete는 와일드 카드를 지원합니까? ssh2_sftp_unlink가 있습니까? 링크 해제합니까? http://php.net/ssh2-sftp-unlink pr http://php.net/ftp-delete 또는 http://php.net/unlink에서 그 내용을 언급하지 마십시오 .. – neubert

+0

아니요. 웹 사이트에서 완전히 언급했습니다. SFTP 기능을 구현하므로 와일드 카드에 대한 지원이 있다고 가정합니다. – Raptor