升级后在 ubuntu 服务器上加载 PHP 7.0 而不是 PHP 7.2

时间:2021-01-26 10:42:06

标签: php apache ubuntu-16.04 php-7.2 bad-gateway

我需要在运行 PHP 7.0 和 fpm 的 Ubuntu 16.04.6 LTS 服务器上安装 PHP 7.2。

我已经安装了 php7.2、php7.2-fpm,启用了模块,禁用了 7.0,设置了替代方案

/etc/alternatives/php -> /usr/bin/php7.2
/etc/alternatives/php-cgi -> /usr/bin/php-cgi7.2
/etc/alternatives/php-cgi-bin -> /usr/lib/cgi-bin/php7.2
/etc/alternatives/php-fpm.sock -> /run/php/php7.2-fpm.sock

如果我停止或卸载 php7.0-fpm 并使用 php7.2-fpm,我会收到 502 bad gateway 错误 如果我重新启动 php7.0-fpm 502 bad gateway 错误消失但 PHP 7.0.33 已加载

Apache 版本为:Apache/2.4.18 (Ubuntu)

配置

<IfModule !mod_php7.c>
<IfModule proxy_fcgi_module>
    <IfModule setenvif_module>
    SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
    </IfModule>

    <FilesMatch ".+\.ph(ar|p|tml)$">
        SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost"
    </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>

我错过了什么?

2 个答案:

答案 0 :(得分:0)

如果您的 php_mod 工作正常,则您没有加载 proxy_fcgi_module 模块。您必须像此配置一样删除 <IfModule !mod_php7.c> 周围的 <IfModule proxy_fcgi_module>

<IfModule !mod_php7.c>
</IfModule>

<IfModule proxy_fcgi_module>
    <IfModule setenvif_module>
    SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
    </IfModule>

    <FilesMatch ".+\.ph(ar|p|tml)$">
        SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost"
    </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>

答案 1 :(得分:0)

好的,我发现了这个问题。

在服务器上配置了 Cady 并且在 /etc/caddy/Caddyfile php fpm 设置为 7.0

我已经解决了在 /run/php 中将 php7.0 符号链接到 7.2 的问题,这样就不必弄乱 Caddyfile。

相关问题