PHP 프로젝트 개발에서 파일 포함 및 경로 관리는 항상 신중하게 처리 해야하는 문제입니다. 특히 여러 개발 환경 (예 : 로컬, 테스트, 생산)을 전환 할 때 하드 코딩 된 경로는 종종 코드를 유지하기가 어렵고 오류를 실행하기도합니다. 파일 경로를보다 유연하게 관리하려면 get_include_path () 및 set_include_path ()는 우아한 솔루션을 제공합니다.
get_include_path ()는 PHP가 현재 includeppath 구성 값을 얻기 위해 제공하는 내장 함수입니다. 이 값은 포함 , 요구 , 포함 _once 및 require_once 검색과 같은 기능이 검색 될 디렉토리를 결정합니다.
echo get_include_path();
출력 예 :
.:/usr/local/lib/php
이 출력은 PHP가 먼저 현재 디렉토리 ( . )에서 파일을 찾은 다음 /usr/local/lib/php 의 파일을 찾는다는 것을 의미합니다.
다른 환경에서는 코드가 상주하는 디렉토리 구조가 다를 수 있습니다. 예를 들어:
로컬 환경 : /사용자/YourName/Projects/MyApp
테스트 서버 : /var/www/test_myapp
생산 환경 : /srv/www/myapp
코드에 죽은 경로를 작성하는 경우 배포 할 때마다 파일 경로를 수정해야하며, 이는 번거 롭을뿐만 아니라 오류가 발생하기 쉬운 것을 의미합니다. 포함 include path를 동적으로 설정하면 경로 구성은 환경에서 분리되어 유연성이 높아질 수 있습니다.
set_include_path ()를 사용하여 php가 파일을 찾는 방식에 영향을 미치는 contact_path를 수정할 수 있습니다.
set_include_path('/path/to/lib');
원래 경로를 바꾸는 대신 경로를 추가 할 수도 있습니다.
set_include_path(get_include_path() . PATH_SEPARATOR . '/path/to/lib');
기존 경로를 기반으로 새로운 조회 디렉토리가 추가됩니다.
이 파일이 프로젝트의 루트 디렉토리에있는 config/ directory에 배치되었다고 가정하면 구성 파일 config.php를 로드하여 예제로 가져옵니다. 모든 환경에서 올바르게로드하려면 다음을 수행 할 수 있습니다.
// 루트 디렉토리 경로를 상수로 정의한다고 가정합니다.
define('BASE_PATH', dirname(__FILE__));
// 설정 include_path
set_include_path(
get_include_path() . PATH_SEPARATOR . BASE_PATH . '/config'
);
// 구성 파일로드
require_once 'config.php';
이러한 방식 으로이 코드를 로컬로 또는 서버에서 실행하든 PHP는 Base_Path가 Project Root 디렉토리에 올바르게 포인트하는 한 Config.php 파일을 올바르게 찾을 수 있습니다.
여러 환경이있는 경우 환경 변수의 도움으로 include_path를 동적으로 설정할 수 있습니다. 예를 들어:
switch (getenv('APP_ENV')) {
case 'development':
set_include_path(BASE_PATH . '/dev_lib');
break;
case 'testing':
set_include_path(BASE_PATH . '/test_lib');
break;
case 'production':
set_include_path(BASE_PATH . '/prod_lib');
break;
default:
set_include_path(BASE_PATH . '/lib');
}
이러한 방식으로 각 환경은 각 환경이 적합한 종속성 디렉토리를 사용하도록합니다.
Path Stitching 오류 : 항상 Path_Separator를 사용하여 여러 경로를 스플릿하면 자동으로 사용합니다 . 또는 ; 운영 체제에 따르면.
종속성 경로 주문 오류 : PHP는 include_path의 순서대로 파일을 검색하여 우선 순위가 높은 경로가 앞에 배치되도록합니다.
경로는 읽을 수 없습니다 : 경로와 파일에 올바른 액세스 권한이 있는지 확인하십시오.
최신 PHP 개발은 작곡가 자동 로딩 메커니즘을 사용하는 것이 좋습니다. 그러나 일부 기존 프로젝트에서는 get_include_path () 는 여전히 유효한 도구입니다. 시스템이 클래스 파일을 자동으로로드 할 수 있도록 include_path에 타사 라이브러리 디렉토리를 추가 할 수 있습니다.
set_include_path(get_include_path() . PATH_SEPARATOR . BASE_PATH . '/vendor/gitbox.net/lib');
이런 식으로 Gitbox.net 의 클래스 라이브러리는 매번 전체 경로를 작성하지 않고도 쉽게 소개 할 수 있습니다.
get_include_path ()는 파일 경로 관리를보다 유연하고 모듈화합니다. 다른 개발 환경에서 Set_include_path () 와 프로젝트 구조의 합리적인 설계를 결합하면 코드의 유지 관리 및 배포 효율을 크게 향상시킬 수 있습니다. 여러 환경과 호환되어야하는 PHP 프로젝트의 경우 Contace_Path를 사용하는 것은 실용적이고 효율적인 전략입니다.