GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Php Fpm funzionante, ma ignorando la versione da Sethandler?

Il nostro server è Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-135-generico x86_64).

Abbiamo seguito le indicazioni da https://tecadmin.net/install-multiple-php-version-apache-ubuntu/ qualche tempo fa e abbiamo ripristinato PHP 5.6 e 7.2 quando 7.2 era nuovo, e abbiamo aggiornato e aggiunto 7.3 e 7.4 con nessun problema fino a stamattina. Ieri ha funzionato bene ma oggi no. Abbiamo aggiornato il pacchetto all'inizio di ieri, ma non ha richiesto un riavvio e non crediamo che si sia riavviato durante la notte da solo come uptime dice che siamo vicini a 15 giorni.

Quindi oggi abbiamo deciso di ripetere il processo e l'abbiamo fatto, riavviando apache2 dopo ogni passaggio:

Provato:a2enmod actions fcgid alias proxy_fcgi e ho ottenuto:ERRORE:il modulo fcgid non esiste!

apt install apache2 libapache2-mod-fcgid e che ha funzionato e aggiunto il pacchetto.

Ha fatto a2enmod actions fcgid alias proxy_fcgi e diceva tutto già abilitato .

File conf controllato in /etc/apache2/sites-enabled :

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

Ho provato phpinfo() pagina e ho ottenuto PHP 7.4.15 invece del previsto 5.6.40. Abbiamo fatto lo stesso con un 7.3 e ottenuto lo stesso 7.4 su phpinfo() usando anche SetHandler di php7.3.

Quindi prova con stato systemctl php5.6-fpm e php7.4-fpm e entrambi attivi (in esecuzione)

Il mio /etc/apache2/conf/php5.6-fpm.conf il file è qui per cominciare e quello per php7.4-fpm.conf è lo stesso tranne che per mod_php5/7 e la versione 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>

C'è un errore qui o da qualche altra parte dovrei cercare?

FWIW, abbiamo un altro server con una configurazione simile e sta riscontrando lo stesso problema, ma in questo momento abbiamo solo bisogno dell'applicazione legacy 5.6 su quel server, quindi abbiamo appena disabilitato 7.4 rimuovendo il file del puntatore in /etc/apache2/conf- abilitato/php7.4-fpm.conf e riavviando apache2. Tuttavia, questo server necessita di più versioni.

Correlati:come scegliere la versione Gcc e G++ predefinita in Ubuntu?

Risposta accettata:

Modifica:

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

per:

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

Ubuntu
  1. Aggiorna la versione PHP a 5.5 in CentOS 6

  2. Aggiorna la versione PHP da 5.3 a 5.4 in Centos6

  3. La sospensione non funziona dopo l'aggiornamento a Ubuntu 14.04 da 13.10?

  4. Come eseguire il downgrade di PHP da 5.3.x a 5.2.x?

  5. Ubuntu One Oauth Accedi da Php?

Come vedere l'output di uno script PHP?

Come modificare le direttive PHP a livello globale da WHM in EasyApache 4?

Come modificare la versione PHP da cPanel?

Come modificare la versione PHP del tuo sito Web da SolidCP?

Seleziona la versione PHP in cPanel

Cambia versione PHP