2014-07-12 2 views
-1

2 개의 디렉토리를 포함하는 PHP 스크립트를 포함/필요로 할 때 뭔가가 발생했습니다. 해결 방법을 찾았지만 실제로 문제가되지는 않습니다.하지만 무슨 일이 일어나고 있는지에 대한 설명을 좋아합니다. 여기 PHP - 디렉토리 돌아 가기

는 파일 구조입니다 :

  • appCode
    • db.php를 (파일 내가 포함하기 위해 노력하고있어)
  • studentManagement
    • index.php를
    • dep
      • getData.php 내가 studentManagement/dep/getData.php에서 appCode/db.php을 포함 할

(파일 난에 db.php를 포함하기 위해 노력하고있어).

getdata.php is executed with ajax from index.php 

내가 사용하는 경우 :

require_once("../../appCode/db.php"); 

그것은 작동하지 않습니다. 작동

유일한 방법은 내가 먼저 디렉토리를 변경할 수 있습니다 :

chdir("../"); 
require_once("../appCode/db.php"); 

되지 않는 이유는 첫 번째 방법을 사용할 수 있습니까? 나는 또한 require 대신 include를 사용하려고 시도했으나 동일하다. mamp 3.0.4에서 테스트 중입니다.

감사합니다.

+0

단일 "." 아마도? => "././appCode/db.php" – cakil

+0

하나의 "." 불행히도 일하지 않았습니다. – mickzer

답변

0

그 때문에 때 require(), include()하고 항상 사실 chdir에서

이 함께 할 수 없다 (귀하의 경우 index.php에서)라는 초기의 PHP 파일에 상대적이다 자신의 변종이 :

require_once("../appCode/db.php"); 

은 올바른 방법입니다.

파일을 필요로하고 디렉토리로 작업 할 때 항상 index.php 인 것처럼 정신을 보입니다 (!). 귀하의 "활성 디렉토리"는 index.php가있는 디렉토리입니다. 당신이 당신의 전체 디렉토리 당신이 사용할 수있는 루트에서 모든 방법을 알고 있다면 당신은 항상 getcwd()http://php.net/manual/en/function.getcwd.php

+0

죄송합니다. getdata.php가 index.php의 아약스와 함께 실행되었다고 언급 했어야합니다. 그래서 위 내용은 그것을 설명하지 않습니다. 내가 chdir ("../")을 제거하면; 스크립트가 실패하면 파일이 포함되지 않습니다. – mickzer

+0

@mickzer는 매우 관련있는 정보와 가장 중요한 ajax로 호출되는 정확한 경로로 질문을 업데이트 할 수 있습니까? –

+0

있습니다. Ajax는 index.php에서 dep/getData.php를 실행하기 위해 사용됩니다. – mickzer

0

와이 현재 작업 디렉토리를 확인할 수 있습니다 대신에 항상 포함 할 수 상대 경로를 사용하는 지금

http://php.net/manual/en/function.set-include-path.php

또는 포함 경로에서 시작하는 파일이 필요합니다.

getData에 넣을 수 있습니다.PHP는 : 당신이 포함해야하고 변경 할 디렉토리 파악 유지하지 않아도 항상 당신의 경로를 포함 사용할 경우

set_include_path ('/homepages/www/2/yourworkingpath');//Use your own directory 
require_once 'appCode/db.php'; 

또한 다른 파일에 같은 일을 할 수 있습니다. 바라기를 이것은 조금 도움이되기를 바랍니다.

+0

이 질문에 대답하지 않습니다. 위에서 설명한 동작에 대한 설명을 얻으려고합니다. 그것은 저를 위해 일하는 O와 함께 일하는 이유를 알고 싶습니다. – mickzer

관련 문제