>  기사  >  백엔드 개발  >  PHP 상대 경로 문제

PHP 상대 경로 문제

巴扎黑
巴扎黑원래의
2016-11-22 16:51:231247검색

PHP에서 파일을 요구하거나 포함할 때 대부분 상대 경로가 사용되는데 이는 골치 아픈 문제입니다.

예:

d33960d65abb73911b33db45e19cd446(웹사이트 루트 디렉터리)

├72d4ced2cc960a6bc2541984146fdaaaFolder

│ │

│ └1.php

├9368c5823948a595f9974a5e2b3bd3f1폴더

│ │

│ └2.php

└ index .php

문제: 1.php에서 include(“../B/2.php”)는 B 디렉터리

에 있는 2.php 파일을 소개하는 데 사용됩니다. index.php에서 include("A/1.php")는 A 디렉토리에 있는 1.php 파일을 소개하는 데 사용됩니다.

물론 실행 시 문제가 발생하며 ../B/ 2.php 파일을 찾을 수 없습니다.

원칙을 기억하세요. 모든 include 문은 결국 포함 파일 경로에 따라 포함 경로로 변환됩니다. __FILE__ 또는 $_SERVER['DOCUMENT_ROOT와 같은 기본 경로를 모든 경로에 대한 참조로 사용하는 것이 좋습니다. ' ]

__FILE__: (다양한 상황에 적합)

구성 파일에서 사이트 루트 디렉터리를 구성합니다.
define( "WEB_ROOT ", dirname(__FILE__) ) ) ;
구성 파일은 웹사이트의 루트 디렉터리에 있습니다.
다른 파일에는 구성 파일이 포함되어 있습니다.
다른 파일을 포함할 때는 WEB_ROOT에 따라 찾으세요.
require_once( WEB_ROOT . "/a.php " );


$_SERVER['DOCUMENT_ROOT'], 비가상 호스트(별칭) 상황에 적합

PHP 코드

<?php  
if (!defined("WETSITE_BASE_DIR"))  
define("WETSITE_BASE_DIR", $_SERVER[&#39;DOCUMENT_ROOT&#39;].&#39;/Clare/&#39;);      
require_once(WETSITE_BASE_DIR.&#39;includes/global.inc.php&#39;);  
?>


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.