PHP에 상대 경로 포함
/root/update/test.php 파일이 있습니다.파일 /root/connect.php도 있습니다.이 파일에는 행이 있습니다.
include "../config.php";
/root/update/test.php에 있습니다.여기 코드가 있습니다.
set_include_path(".:/root");
include "connect.php";
/root/update/test.php를 실행하면 connect.php를 찾을 수 없지만 config.php를 찾을 수 없기 때문에
PHP Warning: include(../config.php): failed to open stream: No such file or directory in /root/connect.php on line 2
PHP Warning: include(): Failed opening '../config.php' for inclusion (include_path='.:/root')
경고로 인해 모든 것이 올바르게 수행되고 있는 것처럼 보이기 때문에 혼란스럽습니다.포함 경로는 /root이며, 존재하는 파일 ../config.php(/config.php)를 찾고 있습니다.누가 이것 좀 정리해 주시겠어요?액세스 권한이 없는 프로덕션 서버에 배포하기 때문에 절대 경로를 사용할 수 없습니다.
우분투/아파체
다음을 사용하여 언제든지 포함할 수 있습니다.__DIR__
:
include(dirname(__DIR__).'/config.php');
__DIR__
는 '상수'로 후행 슬래시 없이 현재 파일의 디렉토리를 반환합니다.실제로는 절대 경로입니다.파일명을 연결하기만 하면 됩니다.__DIR__
이 경우 디렉토리의 상승이 필요하기 때문에 PHP를 사용합니다.dirname
파일 트리가 올라갑니다.여기서 액세스 할 수 있습니다config.php
.
다음 방법으로 루트 경로를 설정할 수도 있습니다.
define('ROOT_PATH', dirname(__DIR__) . '/');
테스트 중.php는 root을 root로 설정합니다./root/
수평을 유지.
include(ROOT_PATH.'config.php');
그런 다음 원하는 위치에서 구성 파일을 포함하도록 작업합니다.
절대 경로가 옵션이 아니라고 생각하시는 것은 감사하지만, 상대 경로 및 PHP include 경로 업데이트보다 더 나은 옵션입니다.
환경에 따라 설정할 수 있는 상수가 있는 절대 경로를 사용합니다.
if (is_production()) {
define('ROOT_PATH', '/some/production/path');
}
else {
define('ROOT_PATH', '/root');
}
include ROOT_PATH . '/connect.php';
코멘트대로ROOT_PATH
또한 현재 경로에서 파생될 수 있습니다.$_SERVER['DOCUMENT_ROOT']
,기타.
function relativepath($to) {
$a=explode("/",$_SERVER["PHP_SELF"] );
$index= array_search("$to",$a);
$str="";
for ($i = 0; $i < count($a)-$index-2; $i++) {
$str.= "../";
}
return $str;
}
이 문제에 대한 최선의 해결책은 다음과 같습니다. 정지할 수준을 지정하기만 하면 됩니다. 하지만 문제는 이 폴더 이름을 한 번 사용해야 한다는 것입니다.
언급URL : https://stackoverflow.com/questions/17407664/php-include-relative-path
'source' 카테고리의 다른 글
MacRoman, CP1252, Latin1, UTF-8 및 ASC 사이의 부호화를 확실하게 추측하는 방법II (0) | 2022.11.05 |
---|---|
Larabel 4의 폐쇄에 데이터 전달 (0) | 2022.11.05 |
Python 버전 번호는 어떻게 비교하나요? (0) | 2022.11.05 |
groupBy에서 발생한 횟수를 어떻게 셀 수 있습니까? (0) | 2022.10.27 |
Java에 파일이 있는지 확인하려면 어떻게 해야 하나요? (0) | 2022.10.27 |