n-n

도큐멘트 루트 디렉토리 밖의 파일을 인클루드 할 때 :: PHP 본문

Linux/Plesk

도큐멘트 루트 디렉토리 밖의 파일을 인클루드 할 때 :: PHP

n-_-n 2009. 1. 29. 19:32

아, 계속되는 무한 삽질

Plesk는 도메인을 추가하면,
Skeleton에 의해 기본적인 디렉토리가 다음과 같이 설치된다.



문제는, 자동으로 설정되는 디렉토리 등의 설정에 의해
도큐멘트 루트 디렉토리 밖의 파일을 인클루드 할 수 없다는 것.

Smarty 작업을 하다보니,
템플릿 파일이나 설정 파일은 웹상에 공개해서는 안되므로,
어떻게든 도큐멘트 루트 디렉토리 밖에서 관리해야 하는데...

이는 PHP의 open_basedir와 직결되는 문제이므로,
open_basedir에 해당 디렉토리를 설정해주면 된다.

PHP 공식 사이트에서 메뉴얼을 살펴보니,
.htaccess 파일에서는 설정이 안된단다... 쩝...
PHP 파일내에서, ini_set 변경도 안 먹힌다... 쓰..버...

그렇담, 아파치의 .conf  파일 혹은 php.ini 파일을 설정하는 수 밖에 없다는 이야기다.
되도록이면 아파치를 재시동 하고 싶지 않지만...

여기서는 아파치의 .conf 파일을 수정하는 예를 포스팅 하겠다.

Plesk에서는 보통 다음의 파일을 만져주면 된다.
/var/www/vhosts/[도메인]/conf/httpd.include // ← Plesk에서는 .conf 확장자가 .include이다.

이 파일 내의,
php_admin_value open_basedir "/var/www/vhosts/[도메인]/httpdocs:/tmp"

부분을 찾아서 인클루드 하고자 하는 디렉토리를 추가해주고,
php_admin_value open_basedir "/var/www/vhosts/[도메인]/httpdocs:/tmp:[원하는 디렉토리]"

그리고 아파치 재시동!

이 과정을 거치면, 도큐멘트 루트 디렉토리 이외의 파일을 인클루드 할 수 있게 된다.

Comments