And*_*w T 3 php apache2 php-fpm
我们的服务器是 Ubuntu 18.04.5 LTS (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
Run Code Online (Sandbox Code Playgroud)
并得到:
ERROR: Module fcgid does not exist!
Run Code Online (Sandbox Code Playgroud)
确实apt install apache2 libapache2-mod-fcgid
有效并添加了软件包。
做了a2enmod actions fcgid alias proxy_fcgi
,它说一切都已启用。
检查了conf文件/etc/apache2/sites-enabled
:
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost"
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
尝试phpinfo()
页面并得到 PHP 7.4.15,而不是预期的 5.6.40。我们对 7.3 做了同样的事情,并且phpinfo()
使用 php7.3 的 SetHandler 也得到了相同的 7.4。
然后尝试systemctl status php5.6-fpm
并php7.4-fpm
得到了两者active (running)
。
我的文件供初学者使用,除了版本之外/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>
Run Code Online (Sandbox Code Playgroud)
这里有错误还是我应该看看其他地方?
FWIW,我们有另一台具有类似设置的服务器,它也有同样的问题,但我们此时只需要该服务器上的 5.6 旧版应用程序,因此我们通过删除 中的指针文件并重新启动来禁用 /etc/apache2/conf-enabled/php7.4-fpm.conf
7.4 apache2
。但是,该服务器需要多个版本。
小智 5
改变:
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost"
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
为了:
<FilesMatch \.php$>
<If "-f %{REQUEST_FILENAME}">
SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost"
</If>
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)