2012-12-16 3 views
5

내 디렉토리 구조는 다음과 같습니다 "이 필요합니다." 나는 PHP 과정을 따르고 있으며, 강사도 똑같은 일을합니다.PHP 상대 경로는

관리자/index.php에 :

require "../blog.php"; 

차례로 그 디렉토리에있는 두 개 더 파일이 필요합니다.

require "db.php"; 
require "functions.php"; 
+0

당신은 레벨을 단계적으로 내려야한다고 생각합니다. '../../ blog.php'는'blog.php'가'blog' 폴더에 없다고 가정합니다. – prodigitalson

+0

그럴 것이라고 생각하지 않습니다. 'blog.php'는'blog' 디렉토리에 있습니다. – Rafay

+0

아아 귀하의 디렉토리 구조 표기법이 혼란 스럽습니다 :-) – prodigitalson

답변

18

상대적 포함 경로가 예상대로 작동하지 않는 경우 포함하려는 경로 앞에 __DIR__을 추가하는 것이 가장 좋습니다.

require __DIR__ . "/../blog.php"; 

상당히 깨끗하며 포함 경로 또는 작업 디렉토리를 수정할 필요가 없습니다.

+0

이것은 효과가 있습니다. 감사! 비록 내가 왜 이것을해야하는지 전혀 모르겠지만. 강사는'require "../blog.php";와 함께 아무 문제없이 떠납니다. OS의 차이 때문입니까? 그는 Mac에 있으며 Windows를 사용하고 있습니다. – Rafay

+2

저는 실제로 확신 할 수 없습니다. 현재 작업 디렉토리가 스크립트 디렉토리와 항상 일치하지는 않는다고 생각합니다. –

+1

@Rafay : 어쨌든 나쁜 행동입니다. 항상 절대 경로를 계산 한 다음 필요/포함해야합니다. – prodigitalson

-3

chdir($_SERVER['DOCUMENT_ROOT'])으로 파일을 시작하고 싶습니다. 이것은 제가 포함하고있는 모든 것에 대해 훌륭하고 논리적 인 기본 경로를 얻을 수있게 해줍니다. 이 포함되는 경우

+0

그래서 php.ini에 include_path 지시어가 있습니다. –

+0

'include_path'는'file_exists'와 같은 것에는 적용되지 않습니다;) –

+0

과 실제 사용하지 않는 php 파일 당 하나의 파일 작업. PSR-0을 사용하거나 __DIR__을 사용하는 것을 고려하십시오. –

1

는이 코드를

require "../db.php"; 
require "../functions.php"; 

를 작성해야하거나 blog.php에서이 파일을 포함하는 경우 다음

require "db.php"; 
require "functions.php"; 
1

당신은 필요이 코드를 작성 index.phpdb.php and functions.php 파일 php.ini에 include_path을 설정하십시오.

런타임에 설정하려면 set_include_path()을 사용하십시오.