절대경로, 상대경로와 PHP 예제

9 일 전 4,848

절대경로는 파일 시스템의 루트 디렉토리부터 파일까지의 전체 경로를 지정합니다. 현재 스크립트의 위치와 무관합니다.
반면에 상대경로는 현재 스크립트의 디렉토리를 기준으로 파일까지의 경로를 지정합니다. 이는 스크립트의 현재 위치에 따라 달라집니다.

절대경로

서버 내 최상위 디렉터리인 루트 (/, ROOT) 디렉터리부터 표기하는 경로.
예컨대 '/var/log/mail/' 혹은 윈도우즈에서 'C:\Users\Username\Documents'.

상대경로

현재 위치한 디렉터리를 기준으로 표기하는 경로. 현재 경로 표기는 '.', 상위 디렉터리는 '..'로 표기.
만약 '/var/log/mail/' 디렉토리와 '/var/home/' 디렉토리가 있다면 현재 '/mail/' 위치에서 '/home/'의 상대적 위치는 '../../home/'가 됩니다. 또한 '/log/' 위치에서 '/mail/'의 상대적 위치는 './mail/' 입니다.

PHP 예제코드

PHP 내장함수를 활용해 현재 코드가 입력되어 있는 파일의 절대경로와 상대경로를 다양한 방법으로 확인해 볼 수 있습니다.

// 현재 스크립트의 절대 경로
$currentPath = realpath(__DIR__);

// 상위 디렉토리의 절대 경로
$parentPath = realpath($currentPath . '/..');

// 다른 디렉토리의 절대 경로
$otherPath = realpath($currentPath . '/path/to/other/directory');

// 현재 스크립트와 다른 파일 간의 상대 경로
$relativePath = 'path/to/another/file.txt';
$relativeToCurrent = realpath($currentPath . '/' . $relativePath);

// 상위 디렉토리와 다른 파일 간의 상대 경로
$relativeToParent = realpath($parentPath . '/' . $relativePath);

// 출력
echo "Current Path: " . $currentPath . "\n";
echo "Parent Path: " . $parentPath . "\n";
echo "Other Path: " . $otherPath . "\n";
echo "Relative to Current: " . $relativeToCurrent . "\n";
echo "Relative to Parent: " . $relativeToParent . "\n";

'include'와 'require'에서의 절대경로와 상대경로

PHP에서 include와 require는 서버가 파일을 실행하기 전에 하나의 PHP 파일의 내용을 다른 PHP 파일에 삽입하는 데 사용됩니다.

// 절대경로
include '/var/www/html/includes/header.php';
require '/var/www/html/includes/footer.php';

// 상대경로
include 'includes/header.php'; // 현재 디렉토리를 기준으로 함
require '../common/footer.php'; // 현재 디렉토리의 상위 디렉토리를 기준으로 함

예제에서 '/var/www/html/includes/header.php'와 '/var/www/html/includes/footer.php'는 절대경로입니다. 루트 디렉토리(/)에서 시작하여 파일까지의 전체 경로를 지정합니다.

'includes/header.php'는 상대경로입니다. 현재 스크립트와 동일한 디렉토리에 있는 'includes' 디렉토리 내의 'header.php' 파일을 찾습니다. '../common/footer.php'는 디렉토리 구조에서 한 단계 위(..)로 이동한 후 'common' 디렉토리 내의 'footer.php' 파일을 찾습니다.

절대경로와 상대경로 비교

구분 절대경로 상대경로
이식성 서버의 디렉토리 구조에 특정되어 있어 이식성이 낮음. 스크립트의 위치에 상대적이므로 이식성이 높아 코드베이스를 다른 서버나 환경으로 이동하기가 더 쉬움.
유지보수 디렉토리 구조가 변경되면 경로를 매번 수정해야 하므로 유지보수가 어려움. 일관된 디렉토리 구조에서는 유지보수가 쉬움. 스크립트의 위치가 변경되면 상대경로가 자동으로 조정됨.
사용 맥락 파일의 정확한 위치가 일정하고 확실할 때 유용함. 예를 들어 설정 파일이나 외부 라이브러리를 포함할 때. 일관된 디렉토리 구조를 가진 프로젝트 내에서 파일을 포함할 때 유용함.

'__DIR__'를 사용한 절대경로

include __DIR__ . '/includes/header.php';
require __DIR__ . '/includes/footer.php';

__DIR__는 현재 파일의 디렉토리를 제공하는 PHP의 매직 상수입니다. 이 접근법은 프로젝트 내에서 상대경로의 이식성과 절대경로의 안정성을 결합합니다.

절대경로와 상대경로 중에서 선택하는 것은 프로젝트의 특정 요구 사항에 따라 다릅니다. 동일한 프로젝트 내에서 내부 포함을 위해 상대경로가 일반적으로 이식성과 유지보수의 용이성 때문에 선호됩니다. 중요한 설정 파일이나 외부 라이브러리의 경우 절대경로가 더 확실할 수 있습니다.

PHP 참고 페이지

PHP: Hypertext Preprocessor
https://www.php.net

유용한 PHP 솔루션
https://www.ppcle.com/blog/php-scripts/

PHP GD 라이브러리, JPG PNG 손실 압축 비율
https://www.ppcle.com/blog/php-gd-library/


홈페이지 제작 기간은 보통 얼마나 걸리나요?

홈페이지, 쇼핑몰 등 웹사이트 제작에 걸리는 기간은 짧게는 며칠에서 ..

홈페이지, 웹사이트 디자인 사이즈

현재 인터넷 이용자의 미디어 해상도를 고려했을 때 적절한 홈페이지 가..

웹 호스팅 선택 기준과 비용, 추천 업체

웹 호스팅은 홈페이지나 쇼핑몰을 운영하기 위해 꼭 필요한 웹 서버를 ..

그누보드, 워드프레스, 제로보드 등 편리한 웹사이트 제…

홈페이지, 쇼핑몰, 커뮤니티 제작 시 비용과 시간을 줄이고 편리하게 ..

디비컷, 추천 웹에이전시와 웹디자인 참고 사이트

웹디자이너 커뮤니티 '디비컷'과 카페24 디자인센터, 아카데미 정글,..

웹 호스팅, 웹 서버 관리 방법

전문적인 호스팅 업체를 이용할 경우 데이터와 DB의 백업이 매일 새벽..