2017-12-18 28 views
0

Apache 서버에서 FPM 모드로 여러 PHP 버전이 설치되었습니다. 사용자가 여기처럼 htaccess로에서 몇 가지 실수를하는 경우,Apache php fpm htacess 파일에 오류가있는 경우 기본 구성

SetHandler php5 

:하지만

<Directory /var/www> 
      Options Indexes FollowSymLinks Includes ExecCGI 
      AllowOverride All 
      Require all granted 
      SetHandler php7 
    </Directory> 

<IfModule mod_fastcgi.c> 
    #PHP 5 
     Action php5 /php5 
     Alias /php5 /usr/lib/cgi-bin/php5 
     FastCgiExternalServer /usr/lib/cgi-bin/php5 -socket /var/run/php/php5.6-fpm.sock -pass-header Authorization 
    #PHP 7 
     Action php7 /php7 
     Alias /php7 /usr/lib/cgi-bin/php7 
     FastCgiExternalServer /usr/lib/cgi-bin/php7 -socket /var/run/php/php7.2-fpm.sock -pass-header Authorization 
</IfModule> 

내가 htaccess로 파일에 SetHandler를 사용, 그건 너무 일 : 모든이의 conf와 함께 잘 작동

SetHandler php5.6 

브라우저 반환 PHP 코드 (보안 휴식) :

<?php phpinfo(); ?> 

보안을 위해 apache.conf를 올바르게 관리하는 방법과 htaccess 파일에 사용자 실수가있는 경우 PHP 기본 버전 만로드 하시겠습니까?

이 설정을 시도하지만 기본적으로 PHP7 버전 만 만듭니다.

<FilesMatch ".+\.ph(p[345]?|t|tml)$"> 
SetHandler php7 
</FilesMatch> 

감사의 도움 : 여기 는 사용자의 .htaccess 파일에 아무것도 변경 수 없습니다.

답변

0

이제 기본 PHP 구성에서 SetEnv 설정으로 솔루션을 찾습니다. 필요의 아파치 2.4 모드 : CGI - 프록시 및 우분투 서버에 대한 매크로

a2enmod proxy_fcgi 
a2enmod macro 

작업을 설정 16.04 (예 phpfpm.conf 파일.) :

SetEnv PHP_VER 5 

<IfModule proxy_fcgi_module> 

    ProxyErrorOverride on 

    <FilesMatch "\.ph(p[2-6]?|tml)$"> 

     <Macro PHPver $ver $cgipath> 
       <If "env('PHP_VER') == '$ver'"> 
       SetHandler '$cgipath' 
       </If> 
     </Macro> 

     #PHP VERSIONS WITH SOCKET OR HOST : 
     Use PHPver 7 'proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost' 
     Use PHPver 5 'proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost' 
     Use PHPver 5.4 'proxy:fcgi://localhost:9054' 
     Use PHPver 5.5 'proxy:fcgi://localhost:9055' 
     Use PHPver 5.6 'proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost' 
     Use PHPver 7.0 'proxy:unix:/var/run/php/php7.0-fpm.sock|fcgi://localhost' 
     Use PHPver 7.1 'proxy:unix:/var/run/php/php7.1-fpm.sock|fcgi://localhost' 
     Use PHPver 7.2 'proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost' 
     #ELSE IF (default version) : 
     SetHandler 'proxy:fcgi://localhost:9054' 

    </FilesMatch> 

</IfModule> 

이제 우리는 제대로 할 수 .htaccess 파일의 PHP 버전으로 전화하십시오 :

SetEnv PHP_VER 7.0