최근에 PHP를 배우면서 작은 프로젝트를 진행하고 있는데 require와 include를 많이 사용하는데, 절대 경로와 상대 경로가 헷갈립니다.
1. PHP의 상대 경로는 실행 중인 스크립트를 기반으로 합니다. 예를 들어 A에는 B가 포함되고 B에는 C가 포함됩니다. A와 C가 동일한 디렉터리에 있는 경우 B에서 C를 포함하는 경로는 상대 경로여야 합니다. 예, B와 C가 동일한 수준 디렉터리에 있는 경우 B에 C를 포함하는 경로는 C를 기준으로 합니다.
2. .php 스크립트가 어떻게 포함되어 있든 dirname(__FILE__)은 스크립트가 있는 폴더의 절대 경로를 가져옵니다.
이 두 가지 규칙은 정확하게 적용하기 어렵습니다. 적어도 저는 종종 헷갈리는 경우가 많아서 좀 더 교묘한 방법을 사용하고 path.php를 직접 작성하여 실수를 거의 하지 않습니다.
<?php define('ROOT_PATH',dirname(__FILE__)); define('ACTION_PATH',ROOT_PATH.'/action/'); define('BEAN_PATH',ROOT_PATH.'/bean/'); define('DAO_PATH',ROOT_PATH.'/dao/'); define('IPADVIEW_PATH',ROOT_PATH.'/ipadView/'); define('VIEW_PATH',ROOT_PATH.'/view/'); ?>