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 중국어 웹사이트의 기타 관련 기사를 참조하세요!