GNU/Linux >> Linux の 問題 >  >> Ubuntu

PHP Fpmは機能していますが、Sethandlerのバージョンを無視していますか?

私たちのサーバーはUbuntu18.04.5LTS(GNU / Linux 4.15.0-135-generic x86_64)です。

しばらく前にhttps://tecadmin.net/install-multiple-php-version-apache-ubuntu/からの指示に従い、7.2が新しいときにPHP 5.6と7.2を実行し直し、7.3と7.4をアップグレードして追加しました。今朝まで問題ありません。昨日はうまくいきましたが、今日はそうではありません。昨日早くにアップデートをパッケージ化しましたが、再起動は必要なく、uptimeとして一晩で再起動したとは思われません。 15日近くだと言っています。

そこで本日、プロセスを再度実行し、すべてのステップの後にapache2を再起動してこれを実行しました:

試行:a2enmod actions fcgid alias proxy_fcgi 取得:エラー:モジュールfcgidが存在しません!

apt install apache2 libapache2-mod-fcgidを実行しました そしてそれはうまくいった パッケージを追加しました。

a2enmod actions fcgid alias proxy_fcgiを実行しました そしてそれはすべてがすでに有効になっていると言っていました 。

/ etc / apache2 / sites-enabledのconfファイルを確認しました :

<FilesMatch .php$>
    SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost"
</FilesMatch>

phpinfo()を試しました ページと予想される5.6.40の代わりにPHP7.4.15を取得しました。 7.3でも同じことを行い、php7.3のSetHandlerを使用してphpinfo()でも同じ7.4を取得しました。

次に、 systemctl statusを試しました php5.6-fpmとphp7.4-fpmおよび両方がアクティブ(実行中)

私の/etc/apache2/conf/php5.6-fpm.conf 初心者向けのファイルです。php7.4-fpm.confのファイルは、mod_php5/7とSetHandlerバージョンを除いて同じです。

# Redirect to local php-fpm if mod_php is not available
<IfModule !mod_php5.c>
<IfModule proxy_fcgi_module>
    # Enable http authorization headers
    <IfModule setenvif_module>
    SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
    </IfModule>

    <FilesMatch ".+.ph(ar|p|tml)$">
        <If "-f %{REQUEST_FILENAME}">
            SetHandler "proxy:unix:/run/php/php5.6-fpm.sock|fcgi://localhost"
        </If>
    </FilesMatch>
    <FilesMatch ".+.phps$">
        # Deny access to raw php sources by default
        # To re-enable it's recommended to enable access to the files
        # only in specific virtual host or directory
        Require all denied
    </FilesMatch>
    # Deny access to files without filename (e.g. '.php')
    <FilesMatch "^.ph(ar|p|ps|tml)$">
        Require all denied
    </FilesMatch>
</IfModule>
</IfModule>

ここまたは他のどこかでエラーが発生しましたか?

FWIW、同様の設定の別のサーバーがあり、同じ問題が発生していますが、現時点ではそのサーバーに5.6のレガシーアプリケーションしか必要ないため、/ etc / apache2/conf-のポインターファイルを削除して7.4を無効にしました。 enabled /php7.4-fpm.confを実行し、apache2を再起動します。ただし、このサーバーには複数のバージョンが必要です。

関連:UbuntuでデフォルトのGccおよびG ++バージョンを選択する方法は?

承認された回答:

変更:

<FilesMatch .php$>
    SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost"
</FilesMatch>

対象:

<FilesMatch .php$>
   <If "-f %{REQUEST_FILENAME}">
    SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost"
   </If>
</FilesMatch>

Ubuntu
  1. PHPバージョンを切り替える方法

  2. 13.10からUbuntu14.04にアップデートした後、サスペンドが機能しませんか?

  3. PHPを5.3.xから5.2.xにダウングレードする方法は?

  1. PHPからのUbuntuOneOauthログイン?

  2. PHPのバージョンを変更する方法

  3. Ubuntu から Java をアンインストールする方法

  1. CentOS6でPHPバージョンを5.5にアップグレードします

  2. Centos6でPHPバージョンを5.3から5.4にアップグレードする

  3. Apache、Mysql、Phpのバージョンを変更せずにUbuntuを10.04から16.04にアップグレードしますか?