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>