2014-06-06 45 views
2

我正在嘗試使用ftp_fgetfgetcsv函數讀取遠端服務器上的csv文件。在遠程服務器上讀取文件時,我已經多次練習過,並且直到現在它都能正常工作。爲什麼「ftp_fget」在PHP中返回「bind()失敗:權限被拒絕(13)」?

我想不通爲什麼ftp_fget返回這個錯誤:bind() failed: Permission denied (13)。 此外,我也找不到有關此錯誤消息的任何實際解釋。

我的客戶誰給了我遠程服務器訪問說,這是一個Windows服務器

$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()... 
    } 
} 

請注意,由於保密原因,ftp服務器變量的值被隱藏。

編輯:我找到了解決方案!

我用ftp_pasv($ftpstream, true);ftplogin()ftp_fget()之間的功能。

回答

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

注意:腳本與解決問題 –

相關問題