2017-12-18 22 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の設定を見つけることができます。 ニーズのはApache 2.4のmod:CGIプロキシとUbuntu Serverのマクロ

a2enmod proxy_fcgi 
a2enmod macro 

の作業コンフィグ16.04(EX 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 
関連する問題