> 백엔드 개발 > PHP 튜토리얼 > 올바른 포함 경로가 있어도 PHP 포함이 실패하는 이유는 무엇입니까?

올바른 포함 경로가 있어도 PHP 포함이 실패하는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-28 06:55:10
원래의
693명이 탐색했습니다.

Why Does My PHP Include Fail Even With a Correct Include Path?

PHP 포함 상대 경로 혼동

상대 경로에서 PHP 파일을 포함하려고 하면 개발자는 포함 설정에도 불구하고 예기치 않은 오류가 발생할 수 있습니다. 올바른 경로. 이 기사에서는 DIR 및 dirname 상수를 사용하여 솔루션을 제공하여 이러한 오류의 잠재적 원인을 자세히 살펴봅니다.

문제:

사용자의 코드 구조에는 /root/connect.php 및 /root/update/test.php라는 두 개의 파일이 포함되어 있습니다. connect.php는 config.php가 /root에 있다고 가정하고 "../config.php"를 포함하려고 시도합니다. 그러나 test.php에는 connect.php가 포함되어 있으며 포함 경로를 ".:/root"로 설정합니다. 이는 이론적으로 /root에서 ../config.php를 포함할 수 있도록 허용해야 합니다.

오류:

올바른 포함 경로가 설정되었음에도 불구하고 코드는 config.php를 찾지 못하고 파일이 존재하지 않는다는 PHP 경고를 표시합니다. config.php에 대한 상대 경로(/root/config.php)가 설정된 포함 경로 내에 있기 때문에 이는 당황스럽습니다.

해결책:

핵심 이 문제를 해결하려면 PHP의 상대 경로 동작을 이해해야 합니다. include는 상대 경로를 지원하지만 시작점은 항상 include 문을 실행하는 파일의 현재 디렉터리입니다. 이 경우 connect.php는 /root/connect.php에서 실행되므로 "../config.php"를 포함하려고 하면 config가 포함되어 있지 않은 /root/connect.php/ 디렉터리를 찾습니다. .php.

이러한 제한을 극복하기 위해 DIR 상수를 사용하여 현재 파일의 디렉터리를 참조할 수 있습니다. 파일 이름을 DIR에 연결하면 원하는 파일의 절대 경로가 제공됩니다.

솔루션이 포함된 코드:

connect.php:

include(dirname(__DIR__).'/config.php');
로그인 후 복사

이 코드는 절대 경로를 사용합니다. dirname(__DIR__).'/config.php'를 사용하여 config.php를 포함하여 현재 디렉터리에 관계없이 발견되도록 합니다.

Test.php:

set_include_path(".:/root");
include "connect.php";
로그인 후 복사

이 수정을 통해 test.php는 connect.php를 성공적으로 포함하게 되며, 결과적으로 올바른 config.php도 포함하게 됩니다. location.

결론:

상대 경로의 동작을 이해하고 DIR 및 dirname 상수를 활용하면 개발자가 상대 경로의 파일을 정확하게 포함할 수 있습니다. , 복잡한 디렉토리 구조로 작업하는 경우에도 마찬가지입니다.

위 내용은 올바른 포함 경로가 있어도 PHP 포함이 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿