PHP 매뉴얼
이전 | J. 부록. 지원 프로토콜/래퍼 목록 | 다음

# FTP 와 FTPS

PHP 3, PHP 4. `PHP 4.3.0`이후부터 `ftps://`

- `ftp://example.com/pub/file.txt`

- `ftp://user:password@example.com/pub/file.txt`

- `ftps://example.com/pub/file.txt`

- `ftps://user:password@example.com/pub/file.txt`

FTP를 통해 기존 파일에 대한 읽기 권한과 새로운 파일의 생성 권한을 허용한다. 서버가 패시브 모드(passive mode) ftp를 지원하지않으면, 접속이 실패할것이다.

읽거나 쓰기 위해 파일을 열수 있다. 그러나 동시에 읽기/쓰기를 할수 없다. 원격 파일이 ftp 서버에 이미 존재하고 그 파일에 쓰기를 시도하려하는데 컨텍스트 옵션 `overwrite` 를 설정하지 않았다면, 접속이 실패할것이다. 차선책으로 FTP extension을 사용할수 있다.

> 덧붙이기: `PHP 5.0.0`부터 `ftp://` URL 래퍼를 통해서 파일을 덧붙일 수 있습니다. 이전 버전에서, `ftp://`를 통한 파일 덧붙이기는 실패합니다.

`PHP 4.3.0`부터 `ftps://`를 지원한다. `ftp://`와 동일하지만, ftp 서버를 통해 안전한 접속 협상(negotiate)을 시도하려 한다. 서버가 SSL을 지원하지 않으면, 접속은 원래의 인코딩되지 않는 ftp로 되돌아간다.

> 참고: FTPS는 `PHP 4.3.0`부터 지원되었다. OpenSSL을 지원하도록 컴파일되어야 한다.

표 J-4. 래퍼 요약

속성 | `PHP 4` | `PHP 5`
--- | --- | ---
`allow_url_fopen`으로 제한 | Yes | Yes
읽기 허용 | Yes | Yes
쓰기 허용 | Yes (새 파일만) | Yes (새 파일/`overwrite`로 기존 파일)
추가 허용 | No | Yes
동시 읽기/쓰기 허용 | No | No
stat() 지원 | No | filesize(), filetype(), file_exists(), is_file(), is_dir() 요소만.
unlink() 지원 | No | Yes
rename() 지원 | No | Yes
mkdir() 지원 | No | Yes
rmdir() 지원 | No | Yes

표 J-5. 컨텍스트 옵션(`PHP 5.0.0`의)

이름 | 사용 | 기본값
--- | --- | ---
`overwrite` | 원격 서버에 이미 존재하는 파일 덮어쓰기를 허용. 쓰기 모드(업로딩)에만 적용. | `FALSE` (Disabled)
`resume_pos` | 전송을 시작할 파일 위치. 읽기 모드(다운로딩)에만 적용. | 0 (파일 처음)

> 기저(Underlying) 소켓 스트림 컨텍스트 옵션: 기저(underlying) 전송에 `ftp://` 스트림을 지원할수 있는 추가 컨텍스트 옵션이며 `tcp://` 전송에 대한 컨텍스트 옵션으로 참조된다. `ftps://` 스트림에 대해서는 `ssl://` 전송에 대한 컨텍스트 옵션으로 참조된다.

이전 | 처음으로 | 다음
HTTP 와 HTTPS | 위로 | PHP 입력/출력(input/output) 스트림