我正在尝试为我的NAS开发基于Web的FTP客户端。当我尝试获取NAS上所有文件的列表时,脚本将永远加载。如果我尝试通过PHP连接到我的webhost,一切都很好,我可以得到所有文件的列表。 如果我在Mac OS中通过终端运行脚本,那么在我的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 :(得分:0)
也许你的鼻子有防火墙。尝试使用以下方式启用被动模式:
ftp_pasv($conn, true);
之后
ftp_login(...)