열 수 없는 PHP 상대 디렉터리에 대한 해결 방법: 1. "절대 경로"를 사용합니다. 2. 일반 함수 import.php를 정의하고 "자동으로 파일을 미리 가져오기"로 설정한 다음 php.ini의 내용을 다음과 같이 수정합니다. "auto_prepend_file = "C:xampphtdocsauto_prepend_file.php""이면 충분합니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 8.1, Dell G3 컴퓨터.
php 상대 디렉토리를 열 수 없습니까? PHP
./a/a.php (相对当前目录) ../common.inc.php (相对上级目录),절대 경로와 같이 .로 시작하는 경로를 나타냅니다. 또는 Windows에서 C:/는 드라이브 문자로 시작하는 유사한 경로이며, 전체 경로는 참조 경로 없이 파일의 최종 주소를 고유하게 결정할 수 있습니다. 예를 들어
/apache/wwwroot/site/a/a.php c:/wwwroot/site/a/a.phpUndetermined path
. 또는 /로 시작하지 않거나 Windows 드라이브 문자:/로 시작하지 않는 경로(예:
a/a.php common.inc.php,처음에는 이것도 상대 경로인 줄 알았습니다. 그러나 php 의 include/require 포함 메커니즘에서 이러한 유형의 경로는 로 시작하는 상대 경로 처리와 완전히 다릅니다.
require './a.php'와 require 'a.php'는 다릅니다!
세 가지 유형의 포함 경로가 처리되는 방식을 분석해 보겠습니다. 먼저 한 가지 결론을 기억하세요. 포함 경로가 상대 경로이거나 절대 경로인 경우 include_path(php.ini에 정의된 include_path 환경 변수)로 이동하지 않습니다. , 또는 프로그램에서 파일을 찾으려면 set_include_path(...)를 사용하십시오.테스트 환경 설명
참고: 다음 토론과 결론은 이 환경을 기반으로 합니다. A=http://www.xxx.com2. 상대 경로: 파일의 최종 경로를 결정하려면 참조 디렉터리가 필요합니다.
포함된 중첩 수준에 관계없이 이 참조 디렉터리는 프로그램 실행 항목 파일이 있는 디렉토리. 예제 1A中定义 require './b/b.php'; // 则B=[SITE]/app/test/b/b.php B中定义 require './c.php'; // 则C=[SITE]/app/test/c.php 不是[SITE]/app/test/b/c.php예제 2
A中定义 require './b/b.php'; // 则B=[SITE]/app/test/b/b.php B中定义 require '../c.php'; // 则C=[SITE]/app/c.php 不是 [SITE]/app/test/c.php예제 3
A中定义 require '../b.php'; //则B=[SITE]/app/b.php B中定义 require '../c.php'; //则C=[SITE]/app/c.php 不是 [SITE]/c.php예제 4:
A中定义 require '../b.php'; // 则B=[SITE]/app/b.php B中定义 require './c/c.php'; / /则C=[SITE]/app/test/c/c.php 不是 [SITE]/app/c/c.php예제 5
A中定义 require '../inc/b.php'; // 则B=[SITE]/app/inc/b.php B中定义 require './c/c.php'; // 则C还是=[SITE]/app/test/c/c.php 不是 [SITE]/app/inc/c/c.php
A中定义 require '../inc/b.php'; // 则B=[SITE]/app/inc/b.php B中定义 require './c.php'; // 则C=[SITE]/app/test/c.php 不是 [SITE]/app/inc/c.php3. 용질 경로는 상대적으로 단순하고 혼동하기 쉽지 않습니다. 실수를 하세요. require|inclue는 디스크의 파일에 해당합니다.
require '/wwwroot/xxx.com/app/test/b.php'; // Linux中 require 'c:/wwwroot/xxx.com/app/test/b.php'; // windows中dirname(__FILE__)도 절대 경로 형태의 디렉터리로 계산되지만 __FILE__는 Magic 상수로 이 구문이 작성된 php 파일의 절대 경로와 동일하다는 점에 유의하세요. 따라서 dirname(__FILE__)은 항상 이 명령문이 작성된 PHP 파일의 절대 경로를 가리키며 해당 파일이 다른 파일에 포함되어 사용되는지 여부와는 아무런 관련이 없습니다. 예제 1
A中定义 require '../b.php'; // 则B=[SITE]/app/b.php B中定义 require dirname(__FILE__).'/c.php'; // 则B=[SITE]/app/c.php예제 2
A中定义 require '../inc/b.php'; // 则B=[SITE]/app/inc/b.php B中定义 require dirname(__FILE__).'/c.php'; // 则B=[SITE]/app/inc/c.php 始终跟B在同一个目录결론: B가 A에 포함되어 사용되거나 직접 액세스되는
B如果 require dirname(__FILE__).'/c.php'; // 则始终引用到跟B在同一个目录中的 c.php文件; B如果 require dirname(__FILE__).'/../c.php'; // 则始终引用到B文件所在目录的父目录中的 c.php文件; B如果 require dirname(__FILE__).'/c/c.php'; // 则始终引用到B文件所在目录的c子目录中的 c.php文件;
"상대 경로"의 "참조 디렉터리"는 실행 항목 파일이 있는 디렉터리이므로 "결정되지 않은" 경로도 혼동하기 쉽기 때문에 최선의 해결책은 다음과 같습니다. "절대 경로" 를 사용합니다. 예를 들어, b.php가 필요한 위치에 관계없이 b.php의 경로는 c.php
$dir = dirname(__FILE__); require($dir . '../c.php');
를 요구하는 참조로 사용됩니다. 일반 함수 import.php가 정의되어 있고 "미리 자동으로 파일 가져오기"로 설정하고 php.ini
更改配置项(必须)auto_prepend_file = "C:\xampp\htdocs\auto_prepend_file.php" 更改配置项(可选)allow_url_include = On
에서 다음과 같이 구성합니다. import.php의 내용은 다음과 같습니다
function import($path) { $old_dir = getcwd(); // 保存原“参照目录” chdir(dirname(__FILE__)); // 将“参照目录”更改为当前脚本的绝对路径 require_once($path); chdir($old_dir); // 改回原“参照目录” }
이렇게 하면 현재 파일
권장 학습: "PHP 비디오 튜토리얼"
을 포함하는 "참조 디렉토리"의 수준에 관계없이 파일을 요구하려면 import() 함수를 사용하십시오.위 내용은 PHP의 상대 디렉터리를 열 수 없으면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!