2012-07-08 5 views
0

나는 같은 폴더, 즉 localhost에있는 php require 명령을 사용하여 fileA를 참조하는 home.php 파일을 가지고있다. 코드는 다음과 같습니다.php require command error

<?php // /localhost/home.php 
require ('/fileA.php'); 
?> 

fileA는 코드 파일 B에서 다른 파일을 참조합니다. 지금까지의 일하는 제대로 내가 fileC.php 내가

<?php // /localhost/A/B/fileC.php 
require ('../../fileA.php'); 
?> 

사용 FILEA를 참조에 액세스 할 때 코드는 FILEA를 획득 할 수 있지만, FILEC 다른 404 error.I을 생산으로 fileB가 같은 폴더에있는 경우에만 제대로 작동 fileB가 fileA에 의해 호출 된 이후로 왜 이런 일이 일어나는지 이해할 수 없습니다.

감사합니다.

답변

2

상대 파일 경로를 사용할 때 포함 여부를 나타내는 파일이 아니라 현재 작업 디렉토리와 관련이 있음을 명심하십시오. 현재 작업 디렉토리는 첫 번째 요청시 자동으로 설정됩니다 (귀하의 경우 A/B).

간단한 솔루션 : 항상 파일을 포함하기 전에이 (가)에있는 파일에 상대적이 방법 dirname(__FILE__)을 사용`이 dirname (__ FILE의 __)`으로

<?php 
require(dirname(__FILE__)."/FileA.php"); 
require(dirname(__FILE__)."/../../FileB.php"); 
+0

을, 당신은'__DIR__'을 의미? :) – Leigh

+1

예,하지만'__DIR__'은 PHP 5.3,'dirname'이 오래된 PHP 설치에서도 작동하기 때문에 사용 가능합니다. –

+0

하지만 fileC를 fileA에서 호출해야합니다. fileB는 fileA에서 호출됩니다. –