일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Eclipse
- SQL
- IPO
- Stock ipo
- linux
- 자바스크립트
- 7월 공모주 청약 일정
- php
- 리눅스
- 공모주
- 제이쿼리
- 맥
- java
- 주식 청약 일정
- 주식
- JavaScript
- MYSQL
- 코드이그나이터
- 공모주 청약
- Stock
- 주식 청약
- jquery
- 6월 공모주 청약 일정
- codeigniter
- css
- 오라클
- Oracle
- 자바
- 공모주 청약 일정
- html
- Today
- Total
개발자의 끄적끄적
[php] fopen() 본문
[php] fopen()
fopen()
1 2 3 4 5 6 7 8 9 |
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'] // 보통 수퍼글로벌 변수를 이런식으로 줄여 사용한다. // DOCUMENT_ROOT는 웹 문서 트리의 루트를 가리킨다.
@ $fp = fopen("$DOCUMENT_ROOT/../orders/orders.txt",'ab'); // @fopen도 가능 if(!$fp) { echo 'Could not processed!</body></html>'; exit; } |
- 첫 번째 파라미터는 파일의 경로 및 파일의 이름을 지정한다.
orders.txt 파일은 일부러 배포할 목적의 파일이 아니라면 보안상의 이유로 웹에서 바로 접근할 수 없어야 한다. 웹 문서 트리의 루트의 부모 디렉터리(.. 부분)에 새로운 디렉터리를 만들어 사용한다.
- 두 번째 파라미터로 파일 모드를 지정한다. 보통 두 번째 파라미터까지만 입력한다.모드모드의미
r 읽기 모드 읽기 전용. 처음에서 시작. r+ 읽기 모드 읽고 쓰기. 처음에서 시작. w 쓰기 모드 쓰기 전용. 처음에서 시작. 기존 파일 삭제. w+ 쓰기 모드 읽고 쓰기. 처음에서 시작. 기존 파일 삭제. x 경고 쓰기 쓰기 전용. 처음에서 시작. 기존 파일이 존재하면 false 반환하고 경고. x+ 경고 쓰기 읽고 쓰기. 처음에서 시작. 기존 파일이 존재하면 false 반환하고 경고. a 추가 모드 쓰기 전용. 기존 파일의 끝에서 시작. a+ 추가 모드 읽고 쓰기. 기존 파일의 끝에서 시작. b 바이너리 모드 다른 모드와 합쳐 사용. 바이너리와 텍스트 파일을 구별하는 경우에만 사용할 수 있다. 윈도우즈에서는 구별하며 유닉스에서는 구별하지 않는다. 이동성을 높이기 위해 항상 이 모드를 사용하는 것이 좋다. 바이너리 모드가 기본값이다. t 텍스트 모드 다른 모드와 합쳐 사용. 이 모드는 윈도우즈 시스템에서만 사용할 수 있다. 코드를 b 옵션으로 사용하도록 바꾸고 난 뒤가 아니라면 t 옵션은 사용하지 않는 편이 좋다. - 세 번째 파라미터부터는 추가 인자로 꼭 넣어줄 필요가 있을 때에만 사용한다. 세 번째 파라미터는 include_path에서 파일을 찾을 때 사용한다.(그에 맞게 PHP 설정을 해야한다. 부록 A 참조) 이 옵션을 사용하면 디렉토리 이름이나 경로를 지정할 필요가 없다.
1
$fp = fopen('orders.txt', 'ab', true);
- 네 번째 파라미터는 프로토콜(http://와 같은)에 의해 정해진 파일 이름이나 외부에서 알려진 파일 이름을 사용할 수 있는데, 이에 대한 설명은 일단 생략한다.
php.ini 파일에서 allow_url_fopen을 활성시키면, fopen()에서 FTP나 HTTP를 사용해서 다른 곳에 있는 파일을 열 수 있다.
파일을 열 때 항상 권한 설정을 잘 해 주어야 한다.
대부분 시스템에서 스크립트는 웹 서버 사용자 권한으로 동작한다. 스크립트가 유닉스 시스템의
~/public_html/chapter2/ 디렉터리에 있다고 가정하고 스크립트가 쓸 수 있는 디렉터리를 만들어보자.
1 2 |
mkdir ~/orders chmod 777 ~/orders |
하지만 모든 사람이 쓸 수 있는 디렉터리는 보안상 상당히 위험하다. 그렇기 때문에 orders 디렉터리는 public_html 디렉터리의 부모에서 만들었다.(자세한 내용은 15장 전자상거래 보안 이슈)
'개발 > php' 카테고리의 다른 글
[php] file_exists() 파일 존재 여부 확인 (0) | 2020.01.19 |
---|---|
[php] fwrite 파일쓰기 (0) | 2020.01.19 |
[php] codeigniter gmail smtp 설정 & 발송하기 [펌] (0) | 2020.01.18 |
[php] xml 을 배열로 변환하는 방법 (0) | 2020.01.17 |
[php] XML declaration allowed only at the start of the document (0) | 2020.01.16 |