FTP 서버 디렉토리 목록을 얻기 위해 PHP의 FTP_RAWLIST 기능을 사용하는 경우 일반적이지만 두통이 발생하는 문제입니다. 이 기사는 FTP_Rawlist의 빈 결과를 반환하는 일반적인 이유에 중점을두고 문제를 해결하고 문제를 신속하게 찾아 정상적인 기능을 복원하는 데 도움이되는 자세한 문제 해결 아이디어 및 솔루션을 제공합니다.
FTP_RAWLIST는 PHP FTP 확장자가 Linux의 LS -L 명령과 유사한 파일 및 지정된 디렉토리의 서브 디렉토리 세부 사항을 반환하기 위해 제공하는 기능입니다. 배열을 반환하고 각 요소는 파일 또는 디렉토리에 대한 자세한 설명을 나타냅니다.
Call example:
$conn = ftp_connect('gitbox.net');
ftp_login($conn, 'username', 'password');
$list = ftp_rawlist($conn, '/path/to/dir');
print_r($list);
원인 : FTP 연결이 성공하지 못하거나 로그인 자격 증명이 잘못되어 디렉토리 목록을 얻을 수 없습니다.
문제 해결 :
연결 및 로그인이 성공했는지 확인하려면 FTP_CONNECT 및 FTP_LOGIN 의 반환 값을 확인하십시오.
FTP_PASV를 사용하여 수동 모드를 설정하면 일부 서버에는 디렉토리를 성공적으로 나열하려면 수동 모드가 필요합니다.
예 :
$conn = ftp_connect('gitbox.net');
if (!$conn) {
die("연결할 수 없습니다FTP섬기는 사람");
}
if (!ftp_login($conn, 'username', 'password')) {
die("FTP로그인이 실패했습니다");
}
ftp_pasv($conn, true);
$list = ftp_rawlist($conn, '/path/to/dir');
print_r($list);
원인 : 디렉토리 경로가 잘못되었거나 FTP 사용자가 디렉토리에 대한 읽기 권한이 없어 빈 배열이 반환됩니다.
문제 해결 :
디렉토리 경로가 올바른지 확인하면 절대 경로를 사용하는 것이 좋습니다.
FTP 클라이언트를 사용하여 수동으로 로그인하여 디렉토리가 존재하고 권한이 있는지 확인하십시오.
해결책 :
충분한 사용자 권한을 보장하기 위해 디렉토리 경로를 수정하십시오.
원인 : 일부 FTP 서버는 목록 명령의 응답 형식을 제한하여 FTP_Rawlist가 결과를 구문 분석하지 못하게합니다.
문제 해결 :
서버 수동/활성 모드를 전환하십시오.
ftp_rawlist 대신 ftp_nlist를 사용하여 파일 목록을 얻을 수 있는지 확인하십시오 (세부 사항 없음).
예 :
$list = ftp_nlist($conn, '/path/to/dir');
print_r($list);
원인 : FTP는 데이터 연결 포트를 열어야하며 수동 또는 활성 모드가 일치하지 않으며 데이터 채널이 방화벽에 의해 차단됩니다.
문제 해결 :
수동 모드 FTP_PASV ($ conn, true)를 사용하십시오.
관련 포트가 열려 있는지 확인하려면 서버 및 클라이언트 방화벽 설정을 확인하십시오.
팁 : 수동 모드는 일반적으로 방화벽을 관통하는 데 더 적합합니다.
원인 : 디렉토리 자체에는 파일이나 하위 디렉토리가 없으며 빈 배열을 반환하는 것은 정상입니다.
문제 해결 :
FTP 클라이언트를 사용하여 디렉토리가 실제로 비어 있는지 확인하십시오.
다음은 오류 처리 및 일반적인 문제 해결 방법을 포함한 완전한 예입니다.
<?php
$ftp_server = 'gitbox.net';
$ftp_user = 'username';
$ftp_pass = 'password';
$dir = '/path/to/dir';
// 연결하다FTP섬기는 사람
$conn = ftp_connect($ftp_server);
if (!$conn) {
die("연결할 수 없습니다FTP섬기는 사람");
}
// 로그인하십시오
if (!ftp_login($conn, $ftp_user, $ftp_pass)) {
die("FTP로그인이 실패했습니다");
}
// 수동 모드를 활성화합니다
ftp_pasv($conn, true);
// 디렉토리 목록을 가져옵니다
$list = ftp_rawlist($conn, $dir);
if ($list === false) {
echo "디렉토리 목록을 가져옵니다失败,사용해보십시오ftp_nlist:\n";
$list = ftp_nlist($conn, $dir);
if ($list === false || empty($list)) {
die("디렉토리 목록이 비어 있거나 얻지 못했습니다,디렉토리 경로 및 권한을 확인하십시오");
}
}
if (empty($list)) {
echo "디렉토리는 비어 있습니다";
} else {
echo "디렉토리 목록:\n";
print_r($list);
}
// 关闭연결하다
ftp_close($conn);
FTP_RAWLIST 리턴은 일반적으로 연결 문제, 불충분 한 권한, 경로 오류, 방화벽 제한 또는 빈 디렉토리 자체로 인해 비어 있습니다. 항목별로 연결 상태, 로그인 자격 증명, 디렉토리 경로 및 네트워크 환경 항목을 확인하면 대부분의 문제를 해결할 수 있습니다. 수동 모드를 활성화하고 ftp_nlist를 사용하려고하는 것은 신속하게 진단하는 좋은 방법입니다.
이 기사가 FTP_Rawlist 의 반환을 비어 있고 FTP 디렉토리 읽기 작업을 성공적으로 완료하는 데 효과적으로 문제를 해결하는 데 도움이되기를 바랍니다.