[Php] include (require) 파일 을 포함 하 는 주의 사항

4159 단어 PHP 노트
/**
 * Author:RDP
 * My mail:[email protected]
 * My blog:  http://blog.teamhaka.com
 */
주: 아래 설명 은 include, include 에 적 용 됩 니 다.once、require、require_once。
예 는 기본적으로 a. php 에 b. php 가 포함 되 어 있 고 b. php 에 c. php 가 포함 되 어 있 습 니 다.주로 a. phop 와 c. phop 간 의 구조 관 계 를 토론 합 니 다.그 중 a. php 는 입구 파일 입 니 다.
 
파일 을 포함 하 는 경 로 는 사실 세 가지 선택 이 있 습 니 다.
각각
절대 경로                                     예: / aa / bbb / ccc / c. php
상대 경로 (현재 디 렉 터 리 사용. /)          예:. / ccc / c. php
상대 경로 3 개 (현재 디 렉 터 리 는 사용 하지 않 습 니 다. /)       ccc / c. php
두 개의 상대 경로 에 대해 상기 (2) 와 (3) 의 상대 경로 의 차이 점 을 직관 적 으로 주의 할 수 있다.있 습 니까? / 파일 을 포함 할 때 큰 차이 가 있 습 니 다!뒷글 을 구체 적 으로 설명 하 다.
 
절대 경 로 를 사용 하 는 주의 점:
절대 경 로 를 직접 쓰 는 것 은 주의 할 점 이 없 지만, dirname ( FILE) 을 사용 하여 현재 파일 의 절대 경 로 를 가 져 올 때, 이 문 구 를 쓰 는 php 파일 이 다른 파일 에 포함 되 어 있 든 없 든, dirname ( FILE) 은 항상 이 문 구 를 쓰 는 php 파일 이 있 는 절대 경 로 를 가리 키 고 있 습 니 다.
예: 
입구 파일 의 a. php: require '/ b / b. php';
b.php:require dirname(__FILE__).'/c.php';
그러면 a. php 를 실행 할 때 b. php 의 dirname ( FILE) 은 a. php 가 있 는 절대 경로 가 아니 라 b. php 가 있 는 절대 경 로 를 얻 을 수 있 습 니 다.(이 예 에서 b. php 와 c. php 는 b 디 렉 터 리 에 속 합 니 다)
 
2 상대 경로 사용 (현재 디 렉 터 리 사용. /) 의 주의 점:
상대 경 로 는 어떤 디 렉 터 리 를 기준 으로 포함 할 파일 이 있 는 위 치 를 확인 합 니 다.상대 경로 의 기준 디 렉 터 리 는 프로그램 이 실행 하 는 입구 파일 이 있 는 디 렉 터 리 입 니 다. 몇 층 을 포함 하 든 상관 없습니다.
예:  
입구 파일 의 a. php: require '/ b / b. php';
b.php: require './c/c.php';  //c 디 렉 터 리 를 포함 할 때 사용 하 는 것 은.. / 입 니 다. 
그러면 c. phop 이 있 는 c 디 렉 터 리 와 b 디 렉 터 리 는 같은 등급 이지 c 디 렉 터 리 가 b 디 렉 터 리 아래 에 있 는 것 이 아 닙 니 다.b. php 에 포 함 된 경 로 는 상대 경 로 를 사 용 했 고 프로그램 입 구 는 a. php 이기 때문에 b. php 에 포 함 된 상대 경 로 는 입구 파일 a. php 가 있 는 디 렉 터 리 를 기준 으로 해 야 합 니 다.
 
셋. 상대 경로 사용 (현재 디 렉 터 리 는 사용 하지 않 습 니 다. /) 의 주의 점:
두 단계 로 나 누 어 처리 합 니 다. 먼저 프로그램 입구 파일 이 있 는 디 렉 터 리 를 기준 으로 상대 경 로 를 따라 찾 습 니 다. 존재 하 는 파일 을 찾 으 면 성공 적 인 종료 (상기 [상대 경로 (현재 디 렉 터 리 사용. /)] 와 같 습 니 다.찾 지 못 하면 두 번 째 로 처리한다.즉, require 문 구 를 쓰 는 phop 파일 이 있 는 디 렉 터 리 와 require 에 포 함 된 경 로 를 연결 하 는 것 입 니까? 아니면 입구 파일 이 있 는 디 렉 터 리 를 기준 으로 이 연결 되 어 있 는 상대 경 로 를 따라 찾 는 것 입 니까? 파일 이 존재 하면 성공 을 포함 합 니 다. 그렇지 않 으 면 포 함 된 파일 이 존재 하지 않 습 니 다.예 를 들 면 이해 하기 가 비교적 쉽다.
예:  
입구 파일 의 a. php: require '/ b / b. php';
b.php: require 'c/c.php';  //c 디 렉 터 리 를 포함 할 때 사용 하지 않 았 음 을 주의 하 십시오. / 
그러면 먼저 입구 파일 a. php 가 있 는 디 렉 터 리 에서 c / c. php 를 찾 습 니 다. 있 으 면 성공 을 포함 합 니 다.
찾 지 못 하면 b. php 가 있 는 경로 (. / b / b. php) 와 b. php 에서 require 하 는 경로 (c / c. phop) 를 연결 하여 연결 후의 상대 경 로 를 얻 습 니 다. / b / c / c. phop.입구 파일 a. php 가 있 는 디 렉 터 리 에서 찾 습 니 다. / b / c / c. php 가 존재 하면 성공 을 포함 합 니 다. 그렇지 않 으 면 오류 가 발생 합 니 다.
 
/ * * * * * * * * * * * * * * * * * * * 분할 선 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
상대 경로 의 끼 워 넣 기 를 살짝 정리 합 니 다.
상대 경로 의 내장 은 프로그램 입구 파일 이 있 는 디 렉 터 리 를 기준 으로 상대 경 로 를 따라 포함 할 파일 을 찾 습 니 다.
그러나 상대 경로 에서 현재 디 렉 터 리 라 는 개념 을 사용 하면 차이 가 있 습 니 다.즉, 현재 디 렉 터 리 를 사용 하지 않 고 표시 할 수 있 도록 처리 하 는 것 은 다 릅 니 다.
있 습 니 다. / 입구 파일 이 있 는 디 렉 터 리 를 기준 으로 직접 찾 습 니 다.
. / 가 없 으 면 먼저 입구 파일 이 있 는 디 렉 터 리 를 기준 으로 찾 습 니 다. 찾 을 수 없 는 상황 에서 경로 의 연결 처 리 를 한 다음 에 연결 후의 상대 경로 에 따라 찾 습 니 다. 기준 은 입구 파일 이 있 는 디 렉 터 리 입 니 다.
종합 적 으로 사용 합 니 다. / 사용 하지 않 습 니 다. / 의 예:
파일 구 조 는 다음 과 같 습 니 다.
/WEBROOT
——–test.php
——–/folder2/test2.php
——–/folder2/folder3/test3.php
프로그램 입구 인 test. php 는 test 2. php 를 포함 하고 test 2. php 에는 test 3. php 가 포함 되 어 있 습 니 다.
그러면 test 2. phop 에 포 함 된 경 로 를 쓰 는 방법 은 다음 과 같은 차이 가 있 습 니 다.
require ('folder2/folder3/test3.php'); //  !       test.php   WEBROOT     folder2/folder3/test3.php       【        (       ./)    】
require ('folder3/test3.php');  //  !                  【        (       ./)    】
require ('./folder2/folder3/test3.php');  //  !       【        (      ./)    】
require ('./test3/test3.php');    //  !    test.php   WEBROOT       test3    !     【        (      ./)    】

좋은 웹페이지 즐겨찾기