2009-09-08 2 views
1

PHP 포함을 사용하여 웹 사이트에 페이지를 포함 시키면 포함 된 파일의 모든 경로가 엉망이됩니다. 포함 된 페이지는 From 페이지를 포함한 같은 폴더에있는 것처럼 작동합니다.php include, 모든 경로가 엉망이 됨

이 문제를 방지하거나 해결할 방법이 있습니까?

+3

실제로 포함되지 않는 파일이 포함될 것으로 기대하십니까? –

답변

1

은 당신이 경로 설정 등이 무엇입니까 그것이 무엇이든? included.php가 page.html과 같은 디렉토리가 아니라면, 기존 include 경로에 추가 할 수 있습니다.

<?php 
$path = '/path/to/includes'; 
set_include_path(get_include_path() . PATH_SEPARATOR . $path); 
?> 

나는이 문제를 해결 얻으려고 the PHP manual

1

당신은을 통해 예를 들어, 올바르게 포함 경로를 설정해야 할 수도 있음을, 아니

include 'FileName.php'; 
0

:

그런 다음
set_include_path(get_include_path() . PATH_SEPARATOR . 'YourPath'); 

당신은 그냥 것처럼 포함 할 필요는 같은 디렉토리입니다 기본적으로 PHP include 함수의 기본 동작입니다. 기본적으로 포함 된 파일의 내용을 포함 파일에 복사합니다. 그렇게하면 포함 된 파일의 명령어가 마치 포함 파일에있는 것처럼 작동합니다 (그 이유는 포함 된 파일이기 때문입니다).

포함 파일의 지침을 리팩터링하여 포함 파일의 폴더에서 작동 시키거나 포함 된 파일의 폴더를 포함 경로에 추가 할 수 있습니다.

2

한 가지 방법을 시도 항상 다른 파일을 포함하는 파일 기반 곳에서 포함하여 :

$here = dirname(__FILE__); 
include($here."/../include.php"); 
// will include a file *allways* one level up from where *this* file is located 
// and not the file that started the execution of the script. 

가끔 파일이를 여러 위치에서 액세스하므로 포함 파일 경로가 관리하기가 어려워 질 수 있습니다. 그래서 보통 알려진 지점에 환경 설정 파일을 포함시키고 일반적인 include 지점에 대한 경로를 정의하려고합니다.

// from a common config file 
define("PATH_TO_CLASS", dirname(__FILE__)."/../class"); 
define("PATH_TO_MEDIA", dirname(__FILE__)."/../assets/media"); 

그런 다음 당신은 당신이 좋아하는 설정 파일을 포함 시켰습니다 파일에 사용할 수 있습니다

include dirname(__FILE__)."/../config.php"; 
include PATH_TO_CLASS."/snassy.class.php"; 
+0

좋은 트릭. 내 두통을 해결했습니다. –

0

또 다른 대답을 당신을 위해. 어떤 이유로 든 일이 변하지 않으면 어떤 성공에 I've used chdir().

예를 들어 모바일 사이트 사용자가 기본 사이트와 다른 디렉토리를 사용했지만 주 사이트의 모든 기능과 클래스를 사용하기를 원했기 때문에 공통 코드를 호출하기 전에 바로 chdir(/to/the/main/site/folder);을 호출했습니다. 다른 경로를 포함합니다. 나는 사물을 혼란스럽게 할 수 있으므로 드물게 사용합니다.

관련 문제