2010-03-22 3 views
1

공유 호스트에서 응용 프로그램을 호스팅 할 예정이며 거기에서 가상 호스트를 만들거나 아파치에서 변경할 수 없습니다.젠드 프레임 워크 - 공용 폴더 없음

종종 ZF와 애플 리케이션은 다음과 같습니다

    • 공공

      • 루트
        • index.php를
        • htaccess로
      • 응용 프로그램
      • 라이브러리

    나는 sth 있습니다. 그렇게 :

    • 루트
      • 응용 프로그램
    • index.php를
    • htaccess로

    내 모든 코드는 응용 프로그램 폴더에 있습니다. 그러나 민감한 정보가 포함 된 .ini 및 .xml 파일도 있습니다. 로그인 이름 및 암호 등 ...

    deny from all으로 응용 프로그램 폴더에 .htaccess를 추가하면 폴더 안의 정보가 안전합니까?

  • 답변

    8

    나는 최근에 http://akrabat.com/zend-framework/zend-framework-on-a-shared-host/에 썼습니다.

    기본 사항은 다음과 같습니다

    SetEnv APPLICATION_ENV production 
    
    RewriteEngine On 
    RewriteRule .* index.php 
    

    은 아마 APPLICATION_ENV을 설정

    <?php 
    define('RUNNING_FROM_ROOT', true); 
    include 'public/index.php'; 
    

    루트 폴더에 .htaccess 파일을 만듭니다

    루트 폴더에 index.php를 만들기 테스트 도중 개발 :

    정적 파일을 참조 할 때 ■ baseUrl() 뷰 도우미가 public/폴더가 아닌 루트 폴더를 가리 킵니다.

    1

    거부에서 응용 프로그램 폴더에 .htaccess를 추가하면 폴더 안의 정보가 안전합니까?

    공급자가 (그들이 생산 시스템에서, 그것은 그 일이 있으면 나쁜 사고 할 필요가 없습니다 것입니다 것입니다 적이있는) .htaccess 파일을 구문 분석하는 방식을 바꿀 것하지만 내가 생각하는 경우가를 때문에 그것은 이상적인 솔루션이 아니다 비공개 디렉토리가 없다면 가장 잘 얻을 수 있습니다.

    (ZF에서 지원하는지 여부를 알 수 없음) xmlini 파일의 이름을 .php으로 바꿉니다. 그렇게하면 보호 기능이 제거 되더라도 일반인에게 제공되는 대신 PHP 파일로 구문 분석됩니다. 조금 편집증이지만, 많은 번거 로움없이 할 수 있다면 나쁜 생각이 아닙니다.

    0

    가상 호스트의 공개 디렉토리에만 액세스 할 수 있습니까? 일반적으로 호스트는 그 위에 하나 이상의 디렉토리에 대한 액세스 권한을 부여합니다.이 경우 훨씬 나은 해결책은 응용 프로그램을 넣을 폴더를 만드는 것입니다. 그런 다음 공개 vhost 디렉토리를 앱의 공개 디렉토리로 심볼릭 링크합니다. 그렇게하지 않으면 ZF에게 어디 있는지 쉽게 알 수 있으므로 설정 파일을 vhost의 공용 디렉토리 외부에 보관할 수 있습니다.

    이러한 작업을 절대 수행 할 수없는 경우 제안한 파일 구조를 사용해야합니다. 민감한 ini/XML 파일이 Zend_Config와 함께 사용된다고 가정하면이 구성 요소는 구성 용 PHP 배열 (예 : http://framework.zend.com/manual/en/zend.config.introduction.html의 예제 1 참조)도 지원합니다. htaccess 파일이 작동하지 않을 가능성이 있으므로, PHP 파일이 PHP로 파싱되는 동안 중요한 데이터를 볼 수 없기 때문에 이것은 약간 더 안전한 옵션입니다.

    2

    공유 호스팅에서 일반적인 디렉토리 구조를 유지할 수 있습니다. .htaccess로 문서 루트를 변경하십시오. 공유 호스팅을 사용할 때 이와 같은 작업을 수행합니다.

    RewriteEngine On 
    
    php_value upload_max_filesize 15M 
    php_value post_max_size 15M 
    php_value max_execution_time 200 
    php_value max_input_time 200 
    # Exclude some directories from URI rewriting 
    #RewriteRule ^(dir1|dir2|dir3) - [L] 
    
    RewriteRule ^\.htaccess$ - [F] 
    
    RewriteCond %{REQUEST_URI} ="" 
    RewriteRule ^.*$ /public/index.php [NC,L] 
    
    RewriteCond %{REQUEST_URI} !^/public/.*$ 
    RewriteRule ^(.*)$ /public/$1 
    
    RewriteCond %{REQUEST_FILENAME} -f 
    RewriteRule ^.*$ - [NC,L] 
    
    RewriteRule ^public/.*$ /public/index.php [NC,L] 
    
    +0

    이 방법을 계속 사용합니까? 나는 이것이 시작하는 좋은 방법이라고 생각합니다. 건배. – MEM

    +0

    @MEM 예, 공유 호스팅을 거의 사용하지는 않습니다. 내가 개발 한 대부분의 웹 사이트는 가상 서버 또는 전용 서버로 이동합니다. –

    +0

    고마워요. 잘 작동한다. –