PHP fopen() 함수
정의와 사용법
fopen() 함수는 파일이나 URL을 열습니다.
열기 실패 시 이 함수는 FALSE를 반환합니다.
문법
fopen(filename,mode,include_path,컨텍스트)
파라미터 | 설명 |
---|---|
filename | 필수. 열려야 하는 파일 또는 URL을 정의합니다. |
mode | 필수. 파일/스트림에 접근하려는 타입을 정의합니다. 가능한 값은 다음 표에 나와 있습니다. |
include_path | 선택 사항. include_path에서 파일을 검색도 필요하다면 이 파라미터를 1 또는 TRUE로 설정할 수 있습니다. |
컨텍스트 | 선택 사항. 파일 핸들 환경을 정의합니다. Context는 스트림의 동작을 변경할 수 있는 옵션 집합입니다. |
mode 파라미터의 가능한 값
mode | 설명 |
---|---|
"r" | 읽기 모드로 열어 파일 포인터를 파일의 머리에 설정합니다. |
"r+" | 읽기와 쓰기 모드로 열어 파일 포인터를 파일의 머리에 설정합니다. |
"w" | 쓰기 모드로 열어 파일 포인터를 파일의 머리에 설정하고 파일 크기를 0으로 자릅니다. 파일이 존재하지 않으면 생성을 시도합니다. |
"w+" | 읽기와 쓰기 모드로 열어 파일 포인터를 파일의 머리에 설정하고 파일 크기를 0으로 자릅니다. 파일이 존재하지 않으면 생성을 시도합니다. |
"a" | 쓰기 모드로 열어 파일 포인터를 파일의 마지막에 설정합니다. 파일이 존재하지 않으면 생성을 시도합니다. |
"a+" | 읽기와 쓰기 모드로 열어 파일 포인터를 파일의 마지막에 설정합니다. 파일이 존재하지 않으면 생성을 시도합니다. |
"x" |
파일을 생성하고 쓰기 모드로 열어 파일 포인터를 파일의 머리에 설정합니다. 파일이 이미 존재하면 fopen() 호출이 실패하고 FALSE를 반환하며 E_WARNING 수준의 오류 메시지를 생성합니다. 파일이 존재하지 않으면 생성을 시도합니다. 이는 기본적인 open(2) 시스템 호출에 O_EXCL|O_CREAT 표시기를 지정하는 것과 동일합니다. 이 옵션은 PHP 4.3.2 이상의 버전에서 지원되며 로컬 파일에만 사용할 수 있습니다. |
"x+" |
를 생성하고 읽기/쓰기 모드로 열고 파일 포인터를 파일 머리에 맞춥니다. 파일이 존재하면 fopen() 호출이 실패하고 FALSE를 반환하며 E_WARNING 수준의 오류 메시지를 생성합니다. 파일이 존재하지 않으면 생성을 시도합니다. 이는 기본적인 open(2) 시스템 호출에 O_EXCL|O_CREAT 표시기를 지정하는 것과 동일합니다. 이 옵션은 PHP 4.3.2 이상의 버전에서 지원되며 로컬 파일에만 사용할 수 있습니다. |
설명
fopen()는 filename 지정된 이름 자원을 스트림에 바인딩합니다. filename 은 "scheme://...의 형식이면 URL로 처리되며, PHP는 이 모드를 처리하는 프로토콜 처리기(도검 프로토콜로도 알려짐)를 검색합니다. 이 프로토콜이 등록된 도검 프로토콜이 아니면 PHP는 스크립트에서 잠재적인 문제를 확인하는 데 도움이 되는 메시지를 발생시킵니다. filename 그대로 파일 이름으로 처리합니다.
PHP가 filename 지정된 것은 로컬 파일이며, 해당 파일에 스트림을 열려고 시도합니다. 이 파일은 PHP가 접근할 수 있는 파일이어야 하므로 파일 접근 권한이 이 접근을 허용해야 합니다. 보안 모드나 open_basedir가 활성화되어 있으면 추가적인 제한이 적용됩니다.
PHP가 filename 지정된 것은 등록된 프로토콜이며, 이 프로토콜은 네트워크 URL로 등록되어 있어 PHP는 allow_url_fopen이 활성화되었는지 확인합니다. 비활성화되어 있으면 PHP는 경고를 발생시키고 fopen 호출이 실패합니다.
대 컨텍스트 의 지원은 PHP 5.0.0에서 추가되었습니다.
피드백 및 주석
주석:다른 운영 체제 가족은 다른 행 끝 관습을 가지고 있습니다. 텍스트 파일에 새 행을 추가하려면 운영 체제에 맞는 행 끝 기호를 사용해야 합니다. 유닉스 기반 시스템은 \n을 행 끝 문자로 사용하며, 윈도우 기반 시스템은 \r\n을 행 끝 문자로 사용하며, 맥인터시스템은 \r을 행 끝 문자로 사용합니다. 파일에 쓰는 데 잘못된 행 끝 기호를 사용하면 다른 애플리케이션이 이 파일을 열 때 이상하게 행동할 수 있습니다.
윈도우에서는 텍스트 변환 표시기 ("t")를 제공하여 \n을 \r\n으로 투명하게 변환할 수 있습니다. 이에 대해 "b"를 사용하여 강제로 이진 모드를 사용할 수 있어 데이터 변환을 하지 않습니다. 이 표시기를 사용하려면 "b" 또는 "t"를 mode 파라미터의 마지막 문자로 사용해야 합니다.
기본적인 변환 모드는 SAPI와 사용하는 PHP 버전에 따라 다르며, 이식성을 위해 항상 적절한 표시를 지정하는 것이 좋습니다. 순수 텍스트 파일을 처리하며 스크립트에서 \n을 행 종료 기호로 사용하고, 이 파일이 다른 애플리케이션(예: Notepad)에서도 읽히기를 기대하는 경우, mode에서 "t"를 사용합니다. 모든 다른 경우에는 "b"를 사용합니다.
이진 파일을 처리할 때 "b" 표시를 지정하지 않으면, 훼손된 이미지 파일 및 \r\n 문자에 대한 이상한 문제가 발생할 수 있습니다.
주석:이식성을 고려하여, fopen()를 사용하여 파일을 열 때 항상 "b" 표시를 사용하는 것이 좋습니다.
주석:다시 한 번, 이식성을 고려하여, "t" 모드에 의존하는 코드를 올바른 행 종료 기호를 사용하여 "b" 모드로 변경하여 다시 작성하는 것을 강력히 권장합니다.
예제
<?php $file = fopen("test.txt","r"); $file = fopen("/home/test/test.txt","r"); $file = fopen("/home/test/test.gif","wb"); $file = fopen("http://www.example.com/","r"); $file = fopen("ftp://user:password@example.com/test.txt","w"); ?>