2011-07-17 4 views
0

NAS 용 웹 bassed FTP 클라이언트를 개발하려고합니다. 내 NAS에있는 모든 파일의 목록을 가져 오려고하면 스크립트가 영원히로드됩니다. PHP를 통해 웹 호스트에 연결하려고하면 모든 것이 잘되고 모든 파일 목록을 얻을 수 있습니다. Mac OS에서 터미널을 통해 스크립트를 실행하면 NAS에있는 파일 목록을 가져 오는 데 문제가 없습니다.FTP 및 PHP로 NAS에 연결

내 NAS에서 파일 목록을 검색 할 수없는 이유는 누구에게 말해 줄 수 있습니까? 내 IP 주소 (물론 로컬 IP가 아닌 :-)에 연결하는 것이 중요합니까? 내 포트는 기본 21이 아닌 2121입니까?

아래는 내 스크립트입니다.

// Set IP and port 
define("FTP_CONNECT_IP", ""); 
define("FTP_CONNECT_PORT", ""); 

// Set username and password 
define("FTP_LOGIN_USER", ""); 
define("FTP_LOGIN_PASS", ""); 

// Set directory to open 
$dir = ($_GET['dir']) ? $_GET['dir'] : "."; 

// Connect to FTP server 
$conn = ftp_connect(FTP_CONNECT_IP, FTP_CONNECT_PORT); // Timeout is not set, default is 90 seconds 

// Log into FTP srever 
$login_result = ftp_login($conn, FTP_LOGIN_USER, FTP_LOGIN_PASS); 

// Print details about directory 
// Set what directory name to show 
$dir_name = ($dir == ".") ? "/" : "/" . $dir; 

echo "Current dir: " . $dir_name . "<br /><br />"; 

foreach (ftp_nlist($conn, $dir) as $element) { 
    $element_name = str_replace($dir . "/", "", $element); 

    // Check if element is a file or a directory 
    // If size is -1 then the element is a directory 
    if(ftp_size($conn, $element) == -1) { 
     echo "<a href=\"index.php?dir=" . $element . "\">" . $element_name . "</a><br />"; 
    } 
    else { 
     echo "<a href=\"http://" . $element . "\" target=\"_blank\">" . $element_name . "</a><br />"; 
    } 
} 

// Close connection 
ftp_close($conn); 

답변

0

아마도 귀하의 NAS에는 방화벽이 있습니다. 사용하여 수동 모드를 활성화하십시오 : 예, 물론

ftp_login(...) 
+0

ftp_pasv($conn, true); 

을! 고맙습니다. – simonbs