2014-06-06 3 views
2

ftp_fgetfgetcsv 기능을 사용하여 먼 서버에서 CSV 파일을 읽으려고합니다. 먼 거리의 서버에서 파일을 읽을 때 이미 여러 번 연습하고 있으며 지금까지 제대로 작동합니다."ftp_fget"이 (가) "bind() failed : Permission denied (13)"를 반환하는 이유는 무엇입니까?

ftp_fget이이 오류를 반환하는 이유를 알 수 없습니다 : bind() failed: Permission denied (13). 또한이 오류 메시지에 대한 실제 설명도 찾을 수 없습니다.

저에게 먼 서버 액세스 권한을 부여한 클라이언트는 Windows 서버이라고 말했습니다. FTP 서버 변수의

$distant_folder = "/myfolder/"; 
$filename = "myfile.csv"; 

$ftpstream = ftp_connect($ftp_server); 
$login = ftp_login($ftpstream, $ftp_user, $ftp_pass); 

if($login){ 
    $tmp_handle = fopen('php://temp', 'r+'); 

    if (ftp_fget($ftpstream, $tmp_handle, $distant_folder.$filename, FTP_ASCII)){ 
     // do stuff with fgetcsv()... 
    } 
} 

주의하시기 바랍니다 값은 기밀 이유로 숨겨져 있습니다.

편집 : 해결책을 찾았습니다!

나는 ftplogin()ftp_fget() 사이에 ftp_pasv($ftpstream, true);을 사용했습니다.

답변

1

같은 문제가있었습니다. 파일을 복사에 대한 나의 스크립트입니다 :

<?php 
//Show erros: 
ini_set('display_errors', 'On'); 
error_reporting(E_ALL); 

// connect and login to FTP server 
$ftp_server = "ftp.painelx.com"; 
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server.<br>"); 
$login  = ftp_login($ftp_conn, 'user_ftp', 'pass_ftp') or die("Could not login to $ftp_server.<br>"); 

$local_file = "data.xml"; 
$server_file = "/paineis/wg/dataxml/data.xml"; 

//Directory and file(/paineis/wg/dataxml/data.xml) on remote server(ftp.painelx.com) 
/* 

enter image description here

*/ 

if($login) { 
    echo "Connected to painel."; 

    ftp_pasv($ftp_conn, true); // ! IMPORTANT 

    $permission = ftp_get($ftp_conn, $local_file, $server_file, FTP_ASCII); 

    if ($permission) { 
     echo "Successfully written to $local_file.<br>"; 
    } else { 
     echo "Error downloading $server_file.<br>"; 
    } 

} else { 
    echo "NOT connected.<br>"; 
} 

ftp_close($ftp_conn); 
?> 

PS :이 같은 문제가 www.ipage.com 호스트에서 나타났다.

+1

참고 : 해결 된 문제가있는 스크립트 –