2017-10-26 4 views
0

SFTP 서버에서 .csv 파일을 가져 와서 로컬로 저장하려고합니다. 다음 코드를 사용하고 있지만 작동하지 않는 것 같습니다.cURL을 사용하여 SFTP 서버에 연결

<?php 

$user = 'username'; 
$pass = 'password'; 
$host = 'order.domain.com'; 
$file = 'filename.csv'; 

$remote = "sftp://$user:[email protected]$host/$file"; 
$local = getcwd() . '/' . $file; 

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $remote); 
curl_setopt($curl, CURLOPT_PROTOCOLS, CURLPROTO_SFTP); 
curl_setopt($curl, CURLOPT_USERPWD, "$user:$pass"); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
file_put_contents($local, curl_exec($curl)); 
curl_close($curl); 

?> 

그러나 그것은 비어, 현재 작업 디렉토리에 filename.csv 파일을 생성 할 것으로 보인다.

컬이 원격 서버에 연결하지 않은 것 같습니다. 어쩌면 컬이 SFTP를 위해 설정되지 않았을까요? the documentation에서

+0

우리에게 보여주세요 [curl log] (https://stackoverflow.com/q/3757071/850848). –

답변

2

:

현재 지원하는 HTTP, HTTPS, 유사한 이름에도 불구하고 FTP, 고퍼, 텔넷, DICT, 파일 및 LDAP 프로토콜 SFTP 및 FTP는 것을

주, , 매우 다릅니다.

SFTP를 원한다면,이를 위해 고안된 도구를 사용해야합니다. this question을 참조하십시오.

+0

나는 이미 PHP 용 SSH2 확장을 사용하려고 시도했지만 작동시키지 못했습니다. 그것이 작동하도록 노력한 후, 나는 2 개의 다른 PHP 라이브러리가 설치되어 있어야한다는 것을 알았고, 그 라이브러리를 찾았을 때, 그 라이브러리들을 사용하는 방법에 대한 지침이없는 수많은 파일들이었다. 다른 해결책은 이미 phpsecl을 들여다 보았습니다. phps.ini를 실행해야하는 작곡가에게 컬이 활성화 되었기 때문에 필요한 작업을 수행 할 수 없었습니다. –

+0

또한 내가 읽은 것에서 cURL은 SSTP SFTP (파일 전송 프로토콜)를 지원합니다. 스택 오버플로 및 다른 몇 가지 블로그에서 수많은 예제를 발견했지만 개인적으로 작업 할 수는 없었습니다. –