2009-04-10 1 views
6

웹 개발 환경에만 MAMP를 사용하고 있으며 웹 서버의/var/www/project-name/폴더 구조를 실제로 이해하지 못했습니다. 웹 서버가 htdocs 폴더를 가리키고 있는지 또는 프로젝트 폴더의 루트를 가리키고 있는지 궁금합니다.PHP 프로젝트의/var/www/폴더 구조

라이브러리는 보안을 위해 htdocs 폴더 외부에 존재하기 때문에 존재하지만 웹 응용 프로그램 자체에서 어떻게 지적합니까? 웹 서버가 웹 응용 프로그램의 htdocs 폴더를 가리키는 경우 웹 응용 프로그램은 htdocs 폴더 외부의 폴더에 액세스 할 수 없습니다.

답변

9

간단한 솔루션과 같이 폴더 구조를 가지고있다 다음 webroot 디렉토리에

/var/www/project-name/ 
    + webroot/ 
    + libraries/ 

포인트 당신의 아파치 DocumentRoot. libraries 디렉토리에 웹에서 액세스 할 수 없도록하려는 모든 라이브러리를 보관하십시오. PHP 코드에서 include 지시문을 사용하여 라이브러리 코드에 액세스하십시오.

트릭은 PHP가 읽기 액세스 권한이있는 파일을 시스템에 포함시킬 수 있음을 이해하는 것입니다. 웹 사이트를 탐색하는 사람은 Webroot 디렉토리의 파일에만 액세스 할 수 있습니다.

+0

그게 정확히 내가 찾던 해답이에요. 매우 감사합니다! – Kezzer

+0

@Kezzer, MAMP가 가리 키도록 구성하는 방법을 설명해 주시겠습니까? – doublejosh

0

일반 사용자가 액세스 할 수없는 PHP의 include_path에 라이브러리를 배치합니다.

+0

그래서 아파치는/var/www/project/htdocs /를 가리킨다.하지만 index.php가 있다고하면 include_path ('/ var/www/project/mylib/lib.php')라고 말할 수 있을까? – Kezzer

1

PHP는 아파치 서버 사용자가 올바른 권한을 가지고있는 파일 시스템의 파일에 접근 할 수 있습니다. 가상 호스트가없는 아파치를 실행하는 리눅스 박스에서,/var/www는 htdocs 디렉토리에 사용할 일반적인 장소입니다. 동일한 서버에 여러 가상 호스트가있는 경우

3

, 그것은 /var/www 아래 디렉토리의 각 사이트가 꽤 일반적입니다, 이들 각각은 웹 루트로 장착 된 htdocs 폴더를 가지고있다. 그러면 웹 루트 위의 폴더에 로그와 응용 프로그램 별 라이브러리를 가질 수 있습니다. 예 :

/var/www/lolcats.com 
/var/www/lolcats.com/htdocs 
/var/www/lolcats.com/htdocs/index.php 
/var/www/lolcats.com/lib 
/var/www/lolcats.com/log 
0

도메인과 동일한 방식으로 로컬 웹 사이트를 디렉토리에 매핑하는 것이 좋습니다.

종종 하나의 웹 호스팅 계정에 여러 웹 사이트가 있으므로 설정을 반영하도록 가상 호스트를 설정하십시오. 공유 호스팅 인 경우

:

/var/www/root 
/var/www/root/website1 
/var/www/root/website2 
/var/www/root/website3 

는 로컬 PC에 3 개 vitual 호스트를 작성하지만, 동일한 파일 구조를 유지한다.

또한 설정 파일의 조건을 사용하여 서버 파일 구조에 따라 사이트를 차별적으로 설정하여 동일한 설정 파일이 두 설정에서 모두 작동하는지 확인하십시오. 즉, 원스텝 빌드 프로세스를 유지해야합니다.