所有托管服务节省 15%

测试技能,享折扣

使用代码: Skills 开始使用
China
管理

如何在您的托管环境中更改 PHP 版本(完整指南)

管理您的PHP版本是任何网站所有者或开发人员最关键的管理任务之一。无论您是升级以利用最新的性能改进、为了遗留应用程序兼容性而降级,还是修补安全漏洞,了解如何在不同的托管环境中切换PHP版本是一项基本技能。本综合指南将引导您了解所有可用的方法——从cPanel的图形界面到VPS Hosting和专用服务器上的命令行工具。

1. 为什么 PHP 版本管理很重要

PHP 为超过 77% 的已知服务器端语言网站提供支持,包括 WordPress、Joomla、Drupal 和 Magento 等主要平台。每个主要 PHP 版本都会引入重大变化:

  • 性能提升: 由于采用了 JIT(即时编译)编译器,PHP 8.x 的速度比 PHP 5.x 或 7.x 快得多。
  • 安全补丁: 较旧的 PHP 版本最终会到达生命周期终止 (EOL),不再接收安全更新,使您的网站面临风险。
  • 应用程序兼容性: 一些较旧的插件、主题或自定义应用程序是为特定 PHP 版本编写的,在较新版本上可能会出现故障。
  • 托管合规性: 许多托管提供商强制执行最低 PHP 版本要求,以维持服务器安全标准。

未能主动管理您的 PHP 版本可能导致功能中断、安全漏洞或网站完全停机。了解如何控制此设置——无论您使用哪种托管类型——对任何认真的网站管理员来说都是必不可少的。

2. 理解 PHP 版本和兼容性

在进行任何更改之前,了解 PHP 发布生命周期和版本结构的方式很重要。

PHP 版本编号

PHP 遵循 MAJOR.MINOR.PATCH 版本控制方案:

组件示例含义
主版本8重大架构变更,可能存在破坏性变更
次版本8.2新功能、向后兼容的改进
补丁版本8.2.10仅限错误修复和安全补丁

PHP 支持生命周期

每个 PHP 次版本获得:

  • 活跃支持约 2 年(错误修复 + 安全补丁)
  • 仅安全支持额外 1 年
  • 生命周期结束 (EOL)之后不再发布补丁

当前支持的 PHP 版本(截至 2024–2025)

PHP 版本状态说明
PHP 8.3活跃支持最新稳定版本
PHP 8.2活跃支持推荐用于大多数应用程序
PHP 8.1仅安全支持仍被广泛使用
PHP 8.0EOL应避免 — 无安全补丁
PHP 7.4EOL仅限遗留支持
PHP 7.3 及以下EOL强烈不建议

> 经验法则:始终运行应用程序官方支持的最高 PHP 版本。如果您的 CMS 或框架支持 PHP 8.2,就没有理由运行 PHP 7.4。

3. 方法 1:通过 cPanel (MultiPHP Manager) 更改 PHP 版本

cPanel 是使用最广泛的虚拟主机控制面板,它提供两个内置工具用于 PHP 版本管理:MultiPHP Manager(服务器范围或按域)和 MultiPHP INI Editor(用于微调 PHP 设置)。如果您使用的是带有 cPanel 的 VPS,这两个工具都可供您使用。

步骤 1:登录 cPanel

  1. 打开浏览器并导航到您的 cPanel 登录 URL:
    https://yourdomain.com:2083(安全,推荐)
    https://yourdomain.com/cpanel
  • 或直接 IP:https://your-server-ip:2083
    1. 输入您的 cPanel 用户名密码
    2. 点击登录

    步骤 2:打开 MultiPHP Manager

    1. 在 cPanel 仪表板中,滚动到软件部分。
    2. 点击MultiPHP Manager

    > 替代方案:某些 cPanel 设置将此标记为选择 PHP 版本PHP 配置PHP 选择器(后者在基于 CloudLinux 的共享主机中很常见)。界面可能略有不同,但过程相同。

    步骤 3:选择您的域和 PHP 版本

    在 MultiPHP Manager 界面中:

    1. 您将看到您账户上托管的所有域和子域的列表。
    2. 勾选您要修改的域旁边的复选框。
    3. 从页面顶部的 PHP 版本下拉菜单中,选择您所需的 PHP 版本(例如,PHP 8.2)。
    4. 点击应用

    > 重要提示:如果您使用的是共享主机账户,可用的 PHP 版本由您的虚拟主机提供商决定。如果您需要未列出的版本,请联系您的主机支持团队或考虑升级到VPS 主机计划,您可以完全控制已安装的 PHP 版本。

    步骤 4:(可选)通过 MultiPHP INI Editor 自定义 PHP 设置

    切换版本后,您可能需要调整 PHP 配置值:

    1. 返回 cPanel 中的软件部分。
    2. 点击MultiPHP INI Editor
    3. 从下拉菜单中选择您的域。
    4. 修改以下值:
      memory_limit(例如,256M)
      upload_max_filesize(例如,64M)
      max_execution_time(例如,300)
      post_max_size(例如,64M)
      
      
      点击应用以保存更改。
      
      步骤 5:验证更改
      创建一个测试文件以确认活跃的 PHP 版本(有关完整说明,请参阅第 7 部分)。
      4. 方法 2:通过 .htaccess (Apache) 更改 PHP 版本
      如果您的托管环境运行 Apache 但不提供图形 PHP 选择器,您可以直接通过 .htaccess 文件控制 PHP 版本。此方法特别适用于共享虚拟主机计划,其中服务器级别访问受到限制。
      工作原理
      Apache 使用处理程序来确定如何处理 .php 文件。通过在 .htaccess 中指定自定义处理程序,您可以指示 Apache 为您的网站使用特定的 PHP 版本。
      步骤 1:访问您的 .htaccess 文件
      您可以通过以下方式编辑 .htaccess:
      
      cPanel 文件管理器:导航到 public_html,找到 .htaccess,右键单击,然后选择编辑。
      FTP/SFTP 客户端:连接到您的服务器并导航到您的网站根目录(通常是 public_html 或 www)。
      SSH 命令行:nano /home/username/public_html/.htaccess

      > 注意:.htaccess 是隐藏文件。在您的 FTP 客户端中,启用”显示隐藏文件”。在 cPanel 文件管理器中,在右上角设置中勾选”显示隐藏文件 (dotfiles)”。

      步骤 2:添加 PHP 处理程序指令

      根据您服务器的 PHP 处理程序命名约定,将以下行之一添加到您的 .htaccess 文件中:

      对于 PHP 8.2:

      AddHandler application/x-httpd-php82 .php

      对于 PHP 8.1:

      AddHandler application/x-httpd-php81 .php

      对于 PHP 7.4(旧版):

      AddHandler application/x-httpd-php74 .php

      替代语法(在某些主机上使用):

      # Using suPHP or FastCGI
      Action php-cgi /cgi-bin/php82
      AddHandler php-cgi .php

      > 重要:确切的处理程序名称(x-httpd-php82x-httpd-php81 等)取决于您的托管提供商如何在其服务器上配置 PHP。如果上述方法不起作用,请查看您主机的文档或联系支持以获取正确的处理程序名称。

      步骤 3:保存并测试

      保存 .htaccess 文件并测试您的网站。如果您看到500 内部服务器错误,处理程序名称可能不正确 — 删除该行并尝试替代语法。

      5. 方法 3:通过命令行更改 PHP 版本 (VPS/Dedicated Servers)

      如果您管理自己的 Dedicated Servers 或具有 root 访问权限的 VPS,您对 PHP 安装和版本切换拥有完全控制权。这是最强大和最灵活的方法。

      前置条件

      • 服务器的 Root 或 sudo 访问权限
      • SSH 客户端(macOS/Linux 上的 Terminal,Windows 上的 PuTTY 或 Windows Terminal)
      • 对 Linux 命令行操作的基本熟悉

      Ubuntu / Debian — 使用 update-alternatives

      Ubuntu 和基于 Debian 的系统使用 update-alternatives 系统来同时管理多个 PHP 版本。

      步骤 1:添加 Ondřej Surý PHP 存储库

      此 PPA 为 Ubuntu/Debian 提供多个 PHP 版本:

      sudo apt update
      sudo apt install -y software-properties-common
      sudo add-apt-repository ppa:ondrej/php
      sudo apt update

      步骤 2:安装所需的 PHP 版本

      # Install PHP 8.2 and common extensions
      sudo apt install -y php8.2 php8.2-cli php8.2-fpm php8.2-mysql php8.2-curl 
          php8.2-gd php8.2-mbstring php8.2-xml php8.2-zip php8.2-bcmath
      
      # Install PHP 8.1 if needed
      sudo apt install -y php8.1 php8.1-cli php8.1-fpm php8.1-mysql

      步骤 3:切换默认 PHP 版本 (CLI)

      # View all registered PHP alternatives
      sudo update-alternatives --list php
      
      # Switch to PHP 8.2
      sudo update-alternatives --set php /usr/bin/php8.2
      
      # Or use the interactive selector
      sudo update-alternatives --config php

      交互式选择器将显示类似以下内容:

      There are 3 choices for the alternative php (providing /usr/bin/php).
      
        Selection    Path             Priority   Status
      ------------------------------------------------------------
      * 0            /usr/bin/php8.2   82        auto mode
        1            /usr/bin/php7.4   74        manual mode
        2            /usr/bin/php8.1   81        manual mode
        3            /usr/bin/php8.2   82        manual mode
      
      Press <enter> to keep the current choice[*], or type selection number:

      输入与您所需版本对应的数字,然后按 Enter。

      步骤 4:为 Apache 切换 PHP 版本 (mod_php)

      # Disable current PHP module (e.g., PHP 8.1)
      sudo a2dismod php8.1
      
      # Enable new PHP module (e.g., PHP 8.2)
      sudo a2enmod php8.2
      
      # Restart Apache
      sudo systemctl restart apache2

      步骤 5:为 Nginx 切换 PHP 版本 (PHP-FPM)

      对于 Nginx,PHP 通过 PHP-FPM 处理。更新您的 Nginx 服务器块以指向正确的 FPM socket:

      # In your Nginx server block configuration
      location ~ .php$ {
          fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
          fastcgi_index index.php;
          include fastcgi_params;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      }

      然后重启 PHP-FPM 和 Nginx:

      sudo systemctl restart php8.2-fpm
      sudo systemctl restart nginx

      CentOS / RHEL / AlmaLinux / Rocky Linux — 使用 SCL 或 Remi 存储库

      选项 A:使用软件集合 (SCL) — CentOS 7

      # Install the SCL repository
      sudo yum install -y centos-release-scl
      
      # Install PHP 7.4 via SCL
      sudo yum install -y rh-php74 rh-php74-php-fpm rh-php74-php-mysqlnd
      
      # Enable PHP 7.4 for the current session
      sudo scl enable rh-php74 bash
      
      # Verify
      php --version

      > 注意:SCL 更改是特定于会话的。要使其对用户永久生效,请将 source /opt/rh/rh-php74/enable 添加到 ~/.bashrc

      选项 B:使用 Remi 存储库 — CentOS 7/8、AlmaLinux、Rocky Linux

      # Install EPEL and Remi repositories
      sudo dnf install -y epel-release
      sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm  # For RHEL 8/AlmaLinux 8
      
      # List available PHP streams
      sudo dnf module list php
      
      # Reset current PHP module
      sudo dnf module reset php
      
      # Enable PHP 8.2 stream
      sudo dnf module enable php:remi-8.2
      
      # Install PHP 8.2
      sudo dnf install -y php php-cli php-fpm php-mysqlnd php-gd php-mbstring php-xml php-zip
      
      # Verify
      php --version

      为单个站点切换 PHP(每个站点的 PHP 版本)

      在运行多个网站的服务器上,您通常需要为每个站点使用不同的 PHP 版本。最简洁的方法是运行多个 PHP-FPM 池:

      # Start PHP-FPM for multiple versions
      sudo systemctl start php7.4-fpm
      sudo systemctl start php8.1-fpm
      sudo systemctl start php8.2-fpm

      然后配置每个 Nginx 虚拟主机以使用不同的 FPM socket:

      # Site A — PHP 8.2
      server {
          server_name site-a.com;
          root /var/www/site-a;
          location ~ .php$ {
              fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
          }
      }
      
      # Site B — PHP 7.4 (legacy application)
      server {
          server_name site-b.com;
          root /var/www/site-b;
          location ~ .php$ {
              fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
          }
      }

      6. 方法 4:通过 php.ini 更改 PHP 版本

      在某些托管环境中,特别是使用 CGIFastCGI PHP 处理程序的环境中,您可以通过放置在网站根目录中的自定义 php.ini 文件来影响 PHP 行为,有时甚至可以影响版本。

      创建自定义 php.ini

      1. 在网站根目录(public_html)中创建一个名为 php.ini 的文件。
      2. 添加您的配置指令:
      ; Custom PHP configuration
      memory_limit = 256M
      upload_max_filesize = 64M
      post_max_size = 64M
      max_execution_time = 300
      max_input_vars = 3000
      date.timezone = "UTC"

      > 注意:此方法控制 PHP *设置*,不一定控制 PHP *版本*本身。通过 php.ini 进行版本选择仅在特定托管设置上可行。如需完全版本控制,请使用 cPanel、.htaccess 或上述命令行方法。

      7. 如何验证您的活跃 PHP 版本

      进行任何更改后,始终验证正确的 PHP 版本是否处于活跃状态。有几种方法可以做到这一点:

      方法 A:创建 phpinfo() 测试页面

      1. 在您的网站根目录(public_html)中创建一个名为 phpinfo.php 的新文件。
      2. 添加以下内容:
      <?php
      phpinfo();
      ?>
      1. 在浏览器中导航到 https://yourdomain.com/phpinfo.php
      2. 该页面将显示全面的 PHP 配置信息。PHP 版本显示在最顶部。

      > 安全警告:测试后立即删除此文件。phpinfo() 输出会暴露敏感的服务器配置详情,可能会帮助攻击者。

      方法 B:通过命令行 (SSH) 检查

      php --version
      # or
      php -v

      预期输出:

      PHP 8.2.10 (cli) (built: Sep  5 2023 08:12:49) (NTS)
      Copyright (c) The PHP Group
      Zend Engine v4.2.10, Copyright (c) Zend Technologies
          with Zend OPcache v8.2.10, Copyright (c), by Zend Technologies

      方法 C:通过简单 PHP 脚本检查

      如果需要更简洁的检查,请使用此最小脚本而不是完整的 phpinfo()

      <?php
      echo 'PHP Version: ' . PHP_VERSION;
      echo '<br>PHP Major Version: ' . PHP_MAJOR_VERSION;
      echo '<br>PHP Minor Version: ' . PHP_MINOR_VERSION;
      ?>

      方法 D:通过 WordPress 管理员检查(适用于 WordPress 网站)

      在您的 WordPress 仪表板中:

      1. 转到工具 → 网站健康
      2. 点击信息标签。
      3. 展开服务器部分。
      4. 查找 PHP 版本

      8. 切换 PHP 版本后的常见错误

      切换 PHP 版本有时会导致问题。以下是最常见的问题及其解决方案:

      错误 1:白屏死机 (WSOD) 或空白页面

      原因:插件、主题或自定义代码使用了与新 PHP 版本不兼容的语法或函数。

      解决方案:

      • 通过添加到 wp-config.php 来启用 WordPress 调试模式:
        define('WP_DEBUG', true);
        define('WP_DEBUG_LOG', true);
        define('WP_DEBUG_DISPLAY', false);
      • 检查 /wp-content/debug.log 以获取特定的错误消息。
      • 停用所有插件并切换到默认主题以隔离问题。

      错误 2:500 内部服务器错误

      原因:通常由 .htaccess 中的 PHP 处理程序不正确或新版本未安装的 PHP 扩展引起。

      解决方案:

      • 删除或更正 .htaccess 中的 AddHandler 指令。
      • 检查服务器的错误日志:tail -f /var/log/apache2/error.logtail -f /var/log/nginx/error.log
      • 确保为新版本安装了所需的 PHP 扩展。

      错误 3:”调用未定义的函数”或”找不到类”

      原因:应用程序所需的 PHP 扩展(例如 php-gdphp-mbstringphp-xml)未为新 PHP 版本安装。

      解决方案:

      # Ubuntu/Debian — install missing extensions for PHP 8.2
      sudo apt install php8.2-gd php8.2-mbstring php8.2-xml php8.2-curl php8.2-zip
      
      # Restart web server
      sudo systemctl restart apache2  # or nginx

      错误 4:已弃用函数警告

      原因:您的代码使用了在较旧 PHP 版本中已弃用且在较新版本中已删除的函数(例如 mysql_* 函数在 PHP 7.0 中被删除)。

      解决方案:

      • 更新您的代码或插件以使用现代等效项(例如 mysqli_* 或 PDO)。
      • 如果无法立即进行代码更改,请考虑暂时保持兼容的 PHP 版本,同时规划升级。

      错误 5:尽管按照步骤操作但 PHP 版本未更改

      原因:可能有多个 PHP 配置生效(例如 CLI 与 Web 服务器),或缓存正在提供旧响应。

      解决方案:

      • 清除浏览器缓存和任何服务器端缓存(OPcache、Redis、Varnish)。
      • 重启 Web 服务器:sudo systemctl restart apache2sudo systemctl restart nginx
      • 确认您正在编辑正确的 .htaccess 或正确域的配置文件。

      9. PHP 版本管理最佳实践

      遵循以下指南来维护健康、安全和高性能的 PHP 环境:

      1. 始终先在暂存环境中测试

      切勿直接在实时生产网站上切换 PHP 版本。设置一个暂存环境——可以是子域或单独的服务器——并在将更改应用到生产环境之前彻底测试您的应用程序。

      2. 保持 PHP 更新

      订阅 PHP 的官方安全公告,并在当前版本达到生命周期终止之前计划升级。运行 EOL PHP 版本是网站被攻击的最常见原因之一。

      3. 升级前审计您的插件和依赖项

      升级 PHP 之前,检查以下内容的兼容性:

      • 所有已安装的 CMS 插件和主题
      • Composer 依赖项 (composer.json)
      • 自定义应用程序代码

      使用 PHPCompatibility(一个 PHP_CodeSniffer 规则集)等工具扫描您的代码库以查找兼容性问题。

      4. 保持 PHP 扩展同步

      切换 PHP 版本时,始终为新版本重新安装所有必需的扩展。缺少扩展是升级后错误的最常见原因。

      5. 对配置文件使用版本控制

      将您的 .htaccessphp.ini 和服务器配置文件存储在 Git 存储库中。这样可以轻松在出现问题时回滚更改。

      6. 切换后进行监控

      更改 PHP 版本后,监控:

      • 应用程序错误日志
      • 服务器错误日志 (/var/log/apache2/error.log/var/log/nginx/error.log)
      • 应用程序性能指标
      • 正常运行时间监控警报

      7. 选择合适的主机以获得 PHP 灵活性

      如果您发现自己经常受到托管环境的 PHP 选项限制,可能是时候升级了。共享网络托管计划提供由提供商管理的精选 PHP 版本集,而 VPS 托管为您提供完全的自由来随时安装、配置和切换任何 PHP 版本。对于企业级控制和性能,专用服务器提供最终的灵活性。

      10. 结论

      更改 PHP 版本是一项基本的主机管理任务,直接影响您网站的安全性、性能和兼容性。无论您是使用 cPanel 的 MultiPHP Manager、编辑 .htaccess 指令,还是在 VPS 或专用服务器上通过命令行管理 PHP 安装,关键原则都是相同的:在部署前测试、更改后验证,并始终保持您的 PHP 版本在积极支持的生命周期内。

      以下是所涵盖方法的快速总结:

      方法最适合所需访问权限
      cPanel MultiPHP Manager共享主机、cPanel VPScPanel 登录
      .htaccess 指令基于 Apache 的共享主机文件管理器 / FTP
      update-alternatives(Ubuntu/Debian)VPS、专用服务器SSH root/sudo
      SCL / Remi 存储库(CentOS/RHEL)VPS、专用服务器SSH root/sudo
      自定义 php.iniCGI/FastCGI 环境文件管理器 / FTP

      如果您正在寻找一个使 PHP 版本管理简单直接并为您提供所需控制的主机环境,请探索 AlexHost 的 VPS 主机计划 — 提供完整的 root 访问权限、多个 Linux 发行版,以及运行任何应用程序所需的 PHP 版本的灵活性。您也可以探索我们的 VPS 控制面板 范围,以找到最适合您工作流程的管理界面。

      积极主动地更新您的 PHP,您的网站将在未来多年保持快速、安全和兼容。