2014-07-14 3 views
1

캔트는 시도하는 방법을 이해합니다.PHP에 대한 경로 정의와 관련된 문제는 여러 폴더에 포함됩니다.

PHP 파일을 포함시켜 모든 레벨의 파일에서 동일한 파일을 호출 할 수있는 방법을 원하며 항상 동일한 파일을 가리 킵니다.

그래서 웹 사이트 설정이 있습니다. user_profile.php에 내가 sidebar.php 파일을 포함하고 예를 들어

root 
init.php 
databaseconn.php 
index.php 
/css/ 
    main.css 
/settings/ 
    user_profile.php 
/template/ 
    sidebar.php 
/includes/ 
    get_user.php 

.

지금 내가 사용합니다 : 그 사이드 바 파일 내의

../template/sidebar.php 

그리고 ../includes/get_user.php을.

잘 작동합니다. 그러나 문제는 내 index.php 페이지에 동일한 sidebar.php 파일을 포함한다는 것입니다. 그러면 문제가 발생합니다.

이에 대응하기 위해

, 난이 시도 : 다음

<?php 
    $isDevelopment = true; 
    $baseInclude = ($isDevelopment ? '//localhost/website/' : '//www.site.com/'); 
?> 

와 내가 사용한 사이트에서 모든 파일을 포함 할 때 :

include $baseInclude. 'template/sidebar.php'; 

이 일을하지만 내가 오류를 얻고있다.

오류가 표시됩니다 : 나는 그것이 표시 될 때 user_profile.php 파일 내의 파일을 찾고 내가 정의한 이유를 이해 해달라고

Warning: include(//localhost/website/template/sidebar.php): failed to open stream: No such file or directory in /Applications/MAMP/htdocs/website/settings/user_profile.php on line 46 

이 로컬 호스트의 경로에서의 coing ...

아이디어가 있으십니까? 가능한 솔루션

+2

과 같을 것이다 및 일정 정의 된에 상대 경로를 사용 – skrilled

+0

외에도 http를 통한 파일 포함은 include가 호출 스크립트의 정보를 필요로하지 않고 html 이외의 정보를 반환하지 않는 한 작동하지 않습니다. 문제는 다른 요청에서 별도로 처리된다는 것입니다. – jeroen

답변

1

상단

다른 파일에 지금

define('ROOT', __DIR__);

에서이 문제를 추가로

include (ROOT . '/full/path/to/file.php');

를 사용하여코드 당신이 __DIR__ (굵게, 밑줄 쓰레기 - 바보 유래 서식)를 통해 init.php의 루트 경로를 정의하지 않는 이유

include (ROOT . '/template/sidebar.php');

0

하나 : 당신의 init.php 파일에

$baseInclude = getcwd();