Náš server je Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-135-generic x86_64).
Před časem jsme postupovali podle pokynů z https://tecadmin.net/install-multiple-php-version-apache-ubuntu/ a obnovili jsme běh PHP 5.6 a 7.2, když bylo 7.2 nové, a upgradovali jsme a přidali 7.3 a 7.4 pomocí bez problémů až do dnešního rána. Včera to fungovalo dobře, ale dnes už ne. Aktualizaci jsme zabalili včera brzy, ale nevyžadovala restart a nevěřím, že se restartovala přes noc sama o sobě jako uptime
říká, že se blíží 15 dnům.
Dnes jsme se tedy pustili do procesu znovu a udělali jsme toto a po každém kroku restartovali apache2:
Vyzkoušeno:a2enmod actions fcgid alias proxy_fcgi
a dostal:CHYBA:Modul fcgid neexistuje!
apt install apache2 libapache2-mod-fcgid
a to fungovalo a přidal balíček.
Provedl a2enmod actions fcgid alias proxy_fcgi
a bylo tam uvedeno, že je vše již povoleno .
Zkontrolovaný soubor conf v /etc/apache2/sites-enabled :
<FilesMatch .php$>
SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost"
</FilesMatch>
Vyzkoušeno phpinfo() stránku a získal PHP 7.4.15 místo očekávaného 5.6.40. Udělali jsme totéž s 7.3 a získali jsme stejnou verzi 7.4 na phpinfo() pomocí SetHandler z php7.3.
Poté vyzkoušejte stav systemctl php5.6-fpm a php7.4-fpm a obě aktivní (běžící)
Můj /etc/apache2/conf/php5.6-fpm.conf soubor je zde pro začátečníky a ten pro php7.4-fpm.conf je stejný kromě mod_php5/7 a verze 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>
Je chyba tady nebo někde jinde, kam bych se měl podívat?
FWIW, máme další server s podobným nastavením a má stejný problém, ale v tuto chvíli potřebujeme pouze starší aplikaci 5.6 na tomto serveru, takže jsme právě deaktivovali 7.4 odstraněním souboru ukazatele v /etc/apache2/conf- enabled/php7.4-fpm.conf a restartování apache2. Tento server však potřebuje více verzí.
Související:Jak vybrat výchozí verzi Gcc a G++ v Ubuntu?Přijatá odpověď:
Změna:
<FilesMatch .php$>
SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost"
</FilesMatch>
pro:
<FilesMatch .php$>
<If "-f %{REQUEST_FILENAME}">
SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost"
</If>
</FilesMatch>