문제

현재 내 사이트에서 다음과 같은 문장을 사용하고 있습니다.

include 'head.php';
include '../head.php';
include '../../head.php';

깊이가 얼마나 많은 중첩 된 폴더 수에 따라. 나는 이것을하는 더 좋은 방법이 있다고 확신합니다.

나는 확신한다 .htaccess 솔루션이지만, 어떻게 구현 해야할지 잘 모르겠습니다. 내가 삽입하면 :

php_value include_path "public/html/root"

... 나는 내 길의 나머지 부분을 잃는다 (/usr/lib/php, 등). 나는 순진하게 시도했다 :

php_value include_path $include_path . "(path)"

그러나 물론 이것은 작동하지 않았습니다. 이 목록으로가는 단일 경로를 어떻게 준비하거나 추가 할 수 있습니까? .htaccess?

도움이 되었습니까?

해결책

편집 할 수 없다면 php.ini 파일 자체, 추가 할 수 있습니다

set_include_path(get_include_path() . PATH_SEPARATOR . $path_to_add);

당신 앞에 include 진술.

그러나 당신이 자신을 가지고 있다면 include 또는 require 문제, 아마도 코드 냄새 일 것입니다. 최상의 솔루션은 좋은 객체 지향 디자인입니다. __autoload 기능.

다른 팁

서브 서브 디렉터에서 파일을 만듭니다 .htaccess 내용으로

php_value include_path '../../includes'

또는 무엇이든 include_path 해당 디렉토리에 맞습니다.

장점 :

  1. 깊이가 다른 여러 포함 된 못생긴 해킹이 없습니다. 단지 include 'head.php'.
  2. 편집에 의존하지 않습니다 php.ini.
  3. 사용할 필요가 없습니다 set_include_path() 포함하기 전에.
  4. 상수를 포함하는 것에 대한 의존성은 없습니다 include INCLUDE_PATH . 'head.php'.

지불 할 가격 :

당신은 각각 파일로 하위 서브 디렉토리를 쓰러 뜨립니다 .htaccess.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top