2013-06-12 3 views
0

PHP가 포함되어있어 귀찮습니다. 나는 다음과 같은 파일 구조를PHP 'include'문제 - 올바르게 작동하지 않는 것으로 보입니다.

htdocs에이

  • index.php를
  • login.php

php_includes

  • db_conx.php
  • check_user_status.php

db_conx.php 파일 내에서 $ number = 10 변수를 생성했습니다. 시험용.

db_conx 파일은 다음 코드로 check_user_status.php 파일에 포함되어

include_once("db_conx.php"); 

그것은 잘 작동 - 즉, 내가 $ 수를 에코 할 수 있고 그러나 10

을 얻을, 나는 나는이 페이지에서 $ 번호를 에코 드릴 수 없습니다 페이지 (check_user_status.php

include_once("php_includes/db_conx.php"); 

과에 : '이 코드 login.php의 상단에있는 check_user_status.php 파일을 포함 해요).

이 스크립트는 많은 페이지에 포함되어 있어야합니다 (사용자가 로그인했는지 여부를 확인하기 때문에). 나는 길에서 이상한 일을하고 있니?

답변

2

상대 경로의 경우이 작업을 수행해야합니다.

include_once("../php_includes/db_conx.php"); 

귀하의 현재 작업 디렉토리는 처음에는 브라우저에서 해당 파일을 누르면 htdocs /가됩니다.

은 다음 db_conx.php을 얻을 수 php_includes을 수행 할 .. 다시 최대 하나 개의 디렉토리 레벨 (htdocs를하고 php_includes 모두 포함되어 있으므로 디렉토리).

이 문제는 하위 디렉토리에서 파일을 만들 때 문제가됩니다. 당신과 페이지 2로 가정하십시오.php to htdocs/subpages/

이제 우리가 같은 단계를 따르면 우리는 같은 위치에 도착하지 않을 것입니다.

더 나은 방법은 절대 위치를 기준으로 경로를 얻는 것입니다. 그래서, 문서 루트 (귀하의 경우 htdocs에)를 사용하여 좋아 :

include($_SERVER["DOCUMENT_ROOT"]."/../php_includes/db_conx.php"); 

는 관계없이 사용되는 경우의 파일 시스템에 같은 장소를 참조한다. 파일 구조가 php_includes이 htdocs에 내 디렉토리가 아닌 가정, 올바른 경우

+0

이 답변은 더 자세한 정보를 제공합니다. –

+0

안녕하세요 orangepill - php_includes가 htdocs에 있으면이 방법이 유용할까요? 이 경우 나는 ".."이 필요하지 않다고 생각하니? – Mobaz

+0

맞습니다. – Orangepill

0

난 당신이

파일의 디렉토리 일정 __DIR__ 마법을 사용할 수 있다고 생각합니다. Include 안에 사용될 경우, 포함 된 파일의 디렉토리가 리턴됩니다. 이것은 dirname (FILE)과 동일합니다. 루트 디렉토리가 아니면이 디렉토리 이름에는 슬래시가 없습니다. (PHP 5.3.0에서 추가되었습니다.)

이가 가리키고 파일 경로는 항상 자동으로 설정됩니다 파일을 포함 중첩와 함께 당신을 도울 것입니다 그리고 당신은 absolute paths 처리 할 필요가 없습니다.

+0

당신이 내 구조 _DIR_ 저에게 샘플을 제공 포함 할 수 있습니다? – Mobaz

+0

@Mobaz는'__DIR__을 포함합니다. '/php_includes/db_conx.php'; ' – Fabio

0

, 당신이 할 필요가있을 것이다 :

include_once("../php_includes/db_conx.php"); 
관련 문제