2014-07-13 7 views
0

URL을 포함하고 내 링크를 허용하는 방법을 찾고 내 로컬 컴퓨터에서 올바르게 작동 할뿐만 아니라 실제 사이트에서도 작동합니다.다른 하위 폴더의 상대 URL

예를 들어 내 DB 연결을 포함하는 common.php 파일이 있습니다. ,

는 또한 모든 페이지에 포함 된 init.php 파일이하고 지금은 (다른 사람의 사이)에 common.php 파일

를 포함 안에, 내가 그러나

include './common.php'; 

을 사용했다 내가 예를 들어 페이지에 있다면 웹/설정

./ 설정 폴더를 가리 킵니다.

어떤 폴더에 관계없이 전체 사이트에서 작동하는 상대 URL로 무엇을 사용해야합니까?

+0

당신은 경로 또는 URL을 의미의 < 5.3 사용할 수 있습니다하지 않을 경우 측면으로

? 경로는 파일 시스템의 위치입니다. URL은 웹 페이지의 위치입니까? – ArtisticPhoenix

답변

1

어때 대략 /? 그것은 기본을 의미하며, 거기에서 당신은 절대 경로를 사용할 수 있습니다 상대 URL은 항상 현재 디렉토리에 의해 영향을

include "/absolute/path/to/file/common.php"; 

을, 당신이 상관없이 당신이 어느 지점에 있는지에게 동일을 할 수 없습니다 대지. 절대 경로를 사용해야합니다.

+0

그냥 슬래시를 사용하면 포함 시키려고 할 때 항상 찾을 수없는 파일을 제공합니다. Im은 MAMP를 사용하여 테스트 사이트를 운영합니다.그것은 그 파일이 포함 된 파일에서 찾을 수 없다고 말합니다 ... 내가하고있는 : include '/common.php'. 그게 맞지 않아? – Lovelock

+0

라이브 서버에 동일한 파일을 업로드 할 수 있기를 원하며 모든 파일과 폴더가 올바르게 링크됩니다. – Lovelock

+0

@ user2921557 상대 경로가 아닌 절대 경로를 연결해야하기 때문에'. /'를'/'로 바꿀 수 없습니다. 기본 디렉토리 (최소한 파생 된 디렉토리)에서 상대 경로를 작성하고이를 사용해야한다고 가정 해보십시오. 'common.php' 파일이 거기에 있지 않으면, 지금 한 일은 효과가 없습니다. – Max

0

이 경우 $_SERVER['DOCUMENT_ROOT']을 사용할 수 있습니다.

set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT']); 

// Now, you can specify your path relative to your DOCUMENT_ROOT. 
include('common.php'); // Assuming your common.php file is in your root path. 

네임 스페이스를 사용하면 더 편리 할 것입니다. 따라서 그 길을 내려갈 수도 있습니다.

0

경로에 대한 빠른 답변은 다음과 같습니다.

__DIR__ = 현재 작업 디렉토리 MVC 유형 아키텍처 (단일 컨트롤러라고도하는 프런트 컨트롤러, 기본적으로 모든 파일이 하나의 파일에서 시작되며 일반적으로 index.php가 시작되고 나머지는 포함됨)가 있으면 상수를 정의 할 수 있습니다 그 주 파일에서. 다른이

root 
    index.php //define basepath 
    includes : 
     other.php 
    template : 
     temp.php 

같은 경우

define('BASE_PATH', __DIR__.'/'); 

그래서 당신은,

include BASE_PATH . 'template/temp.php'; 

모든 메인 index.php 파일에 설정하는 것이 하나 개의 기본으로 연결됩니다 작업을 수행 할 수 있습니다 그리고 내가 루트 위에 놓은 폴더가 동적 인 부분 때문에 원하는 위치로 이동할 수있는 모든 것을 담고 있습니다. __DIR__

긴 대답은 PSR-0 오토로더를 사용하는 것이지만 과장 될 수 있습니다. 당신이 PHP에이 대신 __DIR__

dirname(__FILE__)