GNU/Linux >> Belajar Linux >  >> Ubuntu

Php Fpm Berfungsi, Tetapi Mengabaikan Versi Dari Sethandler?

Server kami adalah Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-135-generic x86_64).

Kami mengikuti petunjuk dari https://tecadmin.net/install-multiple-php-version-Apache-ubuntu/ beberapa waktu lalu dan menjalankan kembali PHP 5.6 dan 7.2 ketika 7.2 masih baru, dan telah memutakhirkan dan menambahkan 7.3 dan 7.4 dengan tidak ada masalah sampai pagi ini. Kemarin berfungsi dengan baik tetapi hari ini tidak. Kami mengemas pembaruan lebih awal kemarin tetapi tidak memerlukan reboot dan tidak percaya itu reboot sendiri dalam semalam sebagai uptime bilang kita hampir 15 hari.

Jadi hari ini kami mulai menjalani proses lagi dan telah melakukannya, memulai ulang Apache2 setelah setiap langkah:

Mencoba:a2enmod actions fcgid alias proxy_fcgi dan mendapatkan:ERROR:Modul fcgid tidak ada!

Apakah apt install apache2 libapache2-mod-fcgid dan itu berhasil dan menambahkan paket.

Apakah a2enmod actions fcgid alias proxy_fcgi dan dikatakan semuanya sudah diaktifkan .

Memeriksa file conf di /etc/Apache2/sites-enabled :

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

Mencoba phpinfo() halaman dan mendapat PHP 7.4.15 bukannya yang diharapkan 5.6.40. Kami melakukan hal yang sama dengan 7.3 dan mendapatkan 7.4 yang sama di phpinfo() menggunakan SetHandler dari php7.3 juga.

Kemudian mencoba systemctl status php5.6-fpm dan php7.4-fpm dan keduanya aktif (berjalan)

/etc/Apache2/conf/php5.6-fpm.conf saya file di sini sebagai permulaan, dan yang untuk php7.4-fpm.conf adalah sama kecuali untuk mod_php5/7 dan versi 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>

Apakah ada kesalahan di sini atau di tempat lain yang harus saya cari?

FWIW, kami memiliki server lain dengan pengaturan yang sama dan memiliki masalah yang sama, tetapi kami hanya membutuhkan aplikasi lama 5.6 di server itu saat ini jadi kami hanya menonaktifkan 7.4 dengan menghapus file pointer di /etc/Apache2/conf- diaktifkan/php7.4-fpm.conf dan memulai ulang Apache2. Namun, server ini membutuhkan beberapa versi.

Terkait:Bagaimana Cara Memilih Versi Gcc dan G++ Default di Ubuntu?

Jawaban yang Diterima:

Ubah:

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

untuk:

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

Ubuntu
  1. Cara Beralih Versi PHP

  2. Suspend Tidak Berfungsi Setelah Memperbarui Ke Ubuntu 14.04 Dari 13.10?

  3. Bagaimana Cara Downgrade Php Dari 5.3.x Menjadi 5.2.x?

  1. Login Ubuntu One Oauth Dari Php?

  2. Bagaimana cara mengubah versi PHP

  3. CentOS menginstal php72 tetapi baris perintah php tidak berfungsi

  1. Tingkatkan versi PHP ke 5.5 di CentOS 6

  2. Tingkatkan versi PHP dari 5.3 ke 5.4 di Centos6

  3. Tingkatkan Ubuntu Dari 10,04 Menjadi 16,04 Tanpa Mengubah Versi Apache, Mysql, dan Php?