현재 위치: > 최신 기사 목록> Windows 시스템에서 FTP_Rawlist 사용에 대한 메모

Windows 시스템에서 FTP_Rawlist 사용에 대한 메모

gitbox 2025-05-26

1. FTP_RAWLIST 소개

FTP_Rawlist 기능의 기능은 FTP 명령 (기본값은 목록 )을 보내고 FTP 서버에서 반환 한 원본 디렉토리 목록을 반환하는 것입니다. 결과는 배열이며 각 요소는 파일 또는 디렉토리의 세부 사항을 포함하는 문자열 라인입니다. 샘플 코드는 다음과 같습니다.

<code> $ conn = ftp_connect ( 'gitbox.net'); ftp_login ($ conn, 'username', 'password'); $ list = ftp_rawlist ($ conn, '/path/to/directory'); foreach ($ list as $ item) {echo $ item. "\N"; } ftp_close ($ conn); </코드>

2. Windows 플랫폼의 특별 문제

2.1 다른 FTP 서버의 목록 명령 형식 차이

FTP_Rawlist 가 반환 한 데이터 형식은 FTP 서버 유형에 따라 고정되지 않았습니다. Windows 서버 (예 : IIS FTP)는 일반적으로 UNIX/Linux 서버와 다른 목록 형식을 반환하며 동일한 서버의 다른 버전도 다른 형식을 반환 할 수 있습니다.

예를 들어:

  • Unix Server는 -rw-r---- 1 사용자 그룹 12345 Mar 14 10:30 filename.txt 와 같은 것을 반환합니다.

  • Windows Server는 03-14-21 10:30 am <lir> 폴더 이름을 반환 할 수 있습니다

이 형식의 차이는 반환 된 결과의 구문 분석이 다른 상황, 특히 Windows 시스템에서 실행될 때 UNIX 스타일이어야한다고 가정 할 수 없습니다.

2.2 문자 인코딩 문제

Windows System FTP 서버는 다른 문자 인코딩 (예 : GBK, GB2312)을 사용할 수있는 반면, PHP는 기본적으로 UTF-8로 기본적으로 사용하여 반환 된 디렉토리 목록에 차량 코드가 생깁니다. 해결책은 다음과 같습니다.

  • 먼저 FTP 서버 인코딩을 결정하십시오

  • mb_convert_encoding을 사용하여 GBK를 UTF-8로 변환하는 것과 같은 반환 된 문자열의 해당 인코딩 변환을 수행하십시오.

예:

<code> $ list = ftp_rawlist ($ conn, '/path/to/directory'); foreach ($ list as & $ item) {$ item = mb_convert_encoding ($ item, 'utf-8', 'gbk'); } unset ($ item); </코드>

3. FTP_RAWLIST가 반환 한 결과를 구문 분석하기위한 제안

다른 플랫폼과 서버의 반환 형식이 다르므로 권장 방법은 다음과 같습니다.

  • 먼저 서버 유형을 결정합니다 (일부 FTP 서버는 연결할 때 유형 정보를 반환합니다)

  • 서버 유형에 따라 다른 구문 분석 로직을 선택하십시오

  • 정규 표현식 또는 전용 구문 분석 라이브러리를 사용하여 반환 된 목록 행을 구문 분석하십시오.

다음은 Windows IIS FTP 서버에 대한 리턴 형식의 구문 분석을 보여주는 간단한 예입니다.

<Code> foreach ($ as $ ait as $ ait) {if (preg_match ( '/^(\ d {2})-(\ d {2})-(\ d {2}) \ s+(\ d {2} : \ d {2}) (am | pm) \ s+(<dir> | \ d+), $/i+(. $ matches))) {$ date = $ 일치 [1]. '-'. $ 일치 [2]. '-'. $ 일치 [3]; $ time = $ 일치 [4]. $ 일치 [5]; $ type = $ 일치 [6] === '<lir>'? '디렉토리': '파일'; $ name = $ 일치 [7]; echo "이름 : $ 이름, 유형 : $ 유형, 날짜 : $ date $ time \ n"; } else {echo "인식되지 않은 줄 : $ item \ n"; }} </code>

4. 연결 설정 및 시간 초과

Windows FTP 서버는 때때로 응답이 느리기 때문에 적절한 시간 초과를 설정하는 것이 좋습니다.

<code> $ conn = ftp_connect ( 'gitbox.net', 21, 90); // 90 Second timeout ftp_login ($ conn, 'username', 'password'); </코드>

5. 수동 모드 (PASV) 및 활성 모드 (포트)

FTP 연결 모드의 호환성은 Windows 및 Linux 플랫폼에서 다릅니다. 수동 모드는 일반적으로 Windows에 권장됩니다.

<code> ftp_pasv ($ conn, true); </코드>

그렇지 않으면 FTP_Rawlist가 방화벽 또는 네트워크 구성 문제로 인해 디렉토리를 얻지 못할 수 있습니다.


요약

Windows 시스템에서 PHP의 FTP_Rawlist를 사용할 때는 다음과 같이 특별한주의를 기울입니다.

  • FTP 서버에서 반환 한 디렉토리 목록 형식의 차이

  • 캐릭터 인코딩 문제

  • 결과를 반환하기위한 적절한 구문 분석

  • 연결 시간 초과 및 전송 모드 설정

이로 인해 크로스 플랫폼 호환성 및 프로그램 견고성을 최대화 할 수 있습니다.