fopen()
fopen (string $filename, string $mode, bool $use_include_path, resource $context);
파일이나 URL을 연다. 실패하면 false 를 반환.
string $filename
파일을 로드할 파일명으로, 앞에 "scheme://.." 와 같은 프로토콜을 명시하는 경우 해당하는 프로토콜을
이용하는 URL로 판별하여 해당 스키마의 프로토콜 핸들러를 찾아서 파일에 접근하게 된다.
만약 프로토콜이 명시되지 않았다면 로컬 서버의 일반적 파일로 판단하여 스트림으로 연다.
php.ini 설정파일에 safe_mode 나 open_basedir 를 설정하면 fopen 에 기본적으로 적용하게 된다.
첫번째 매개변수를 URL로 판단하면 php.ini 설정파일에 allow_url_fopen 이 활성화 되었는지 보고,
만일 false 로 설정되었다면 경고와 함께 fopen 실행이 중지된다.프로토콜
정의
file:// 로컬 파일 시스템 접근
http://
ftp url php://
다양한 I/O stream
zlib:// 압축된 stream
glob:// 패턴에 맞는 경로이름을 검색 phar:// PHP archive
ssh2:// Secure Shell 2 rar:// rar ogg:// audio stream expect:// Process Interaction Streams
주의 : 윈도우에서는 백슬래쉬는 2개를 사용해야 합니다.string $mode
파일을 열때 모드를 선택.인자
모드
포인터 위치
파일이 존재 유무
r 읽기 전용
파일의 시작 파일내용 보존 r+ 읽기 + 쓰기
파일의 시작 파일내용 보존 w 쓰기 전용 파일의 시작 파일내용 삭제, 없으면 새로 생성 w+ 읽기 + 쓰기 파일의 시작 파일내용 삭제, 없으면 새로 생성
a 쓰기 전용
파일의 끝 파일내용 보존, 없으면 새로 생성
a+ 읽고 쓰기 파일의 끝 파일내용 보존, 없으면 새로 생성
x 쓰기 전용 새로운 파일 생성
파일이 존재하면 false 리턴, 그리고 에러 남 x+ 읽고 쓰기 새로운 파일 생성 파일이 존재하면 false 리턴, 그리고 에러 남 b : 바이너리모드로 호출
t : 텍스트 파일의 라인 변경 태그를 Unix 에서는 \n를 사용하고, 맥에서는 \r만 사용하는데,
윈도우에서는 \r\n를 사용하는데, 이러한 \n 을 \r\n으로 변환해준다.
따라서 다른 시스템의 텍스트 파일을 윈도우 플랫폼에서 열 때 사용하면 좋다.
매개변수 뒤에 마지막에 b 나 t 를 붙일 수 있다.- bool $use_include_path = false
옵션으로 기본값이 false 로 설정. true(1) 로 설정하게 되면, php.ini 에 설정되어 있는 include_path 경로도
같이 검색을 하게 된다. - resource $context
PHP 5.0 이후에 추가되었으며, 파일 핸들러에서 다룰 컨텍스트를 지정해주는 매개변수이다. - 파일 읽고 쓰는 함수들
파일을 읽고 쓰거나 특정 위치로 갈때에는 다음 함수들을 사용하면 된다.
string fgets ( resource $handle [, int $length ] ); //한 줄을 읽은, default 최대 length는 1024
string fread ( resource $handle , int $length ); // length 바이트를 읽음 (바이너리 모드일 때 사용)
int fwrite ( resource $handle , string $string [, int $length ] ); // 바이너리로 파일에 씀
int ftell ( resource $handle ); // 현재 핸들러의 위치를 리턴
int fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] ); //핸들러의 해당 위치로 이동 - 파일 닫기
파일을 다 쓰고 읽고 나면 최종적으로는 반드시 파일을 닫아줘야한다.
bool fclose ( resource $handle ); // 핸들러를 닫는다.
'Development > PHP' 카테고리의 다른 글
Phalcon Framework 환경 구성 과정 (10) | 2014.01.09 |
---|---|
PHP include / include_once / require / require_once (0) | 2013.12.06 |
Eclipse (이클립스) 와 CodeIgniter (코드이그나이터) 코드 어시스트 (0) | 2013.07.16 |
PDO - PHP Data Object (0) | 2013.07.02 |
SQL Server Driver - Case 2 <미테스트> (0) | 2013.06.21 |
댓글