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) 파일을 찾고 있습니다. 누군가 나를 위해 이것을 해결할 수 있습니까? 액세스 권한이없는 프로덕션 서버에 배포하기 때문에 절대 경로를 사용하는 것은 옵션이 아닙니다.
Ubuntu / Apache
항상 다음을 사용하여 포함 할 수 있습니다 __DIR__.
include(dirname(__DIR__).'/config.php');
__DIR__는 ' 마법의 상수 '이며 후행 슬래시없이 현재 파일의 디렉토리를 반환합니다. 실제로는 절대 경로이므로 파일 이름을 __DIR__. 이 경우 디렉토리 dirname를 올라 가야하므로 파일 트리를 올라가는 PHP를 사용 하고 여기에서 config.php.
이 방법에서도 루트 경로를 설정할 수 있습니다.
define('ROOT_PATH', dirname(__DIR__) . '/');
test.php에서 루트를 /root/수준 으로 설정합니다 .
include(ROOT_PATH.'config.php');
그런 다음 원하는 위치에서 구성 파일을 포함하도록 작업해야합니다.
난 당신이 절대 경로는 선택 사항이 아닙니다 믿고 감사 드리며, 그것은 이다 더 나은 상대 경로보다는 옵션과 PHP가 포함 경로를 업데이트.
환경에 따라 설정할 수있는 상수와 함께 절대 경로를 사용하십시오.
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
'IT TIP' 카테고리의 다른 글
| Pandas 데이터 프레임의 맞춤 정렬 (0) | 2020.11.30 |
|---|---|
| web.xml의 세션 시간 초과 (0) | 2020.11.30 |
| 자바 8 스트림 : limit ()와 skip ()의 차이점 (0) | 2020.11.30 |
| 동일한 Xcode 프로젝트에서 Swift, Objective-C, C 및 C ++ 파일을 가질 수 있습니까? (0) | 2020.11.30 |
| MySQL SELECT를 사용하여 가상 열을 만드는 방법은 무엇입니까? (0) | 2020.11.29 |