前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Ubuntu和Debian上安装或升级到最新版本PHP 8.3

如何在Ubuntu和Debian上安装或升级到最新版本PHP 8.3

作者头像
Tinywan
发布2023-11-23 14:05:22
1.7K0
发布2023-11-23 14:05:22
举报
文章被收录于专栏:开源技术小栈开源技术小栈

介绍

PHP 8.3是2023年PHP的主要新更新。它带来了很好的新特性,比如类型化的类常量,一组新的DateTime扩展,一个新的 json_validate 函数,以及一些新特性,更改和弃用。和往常一样,PHP 8.3带来了一些bug修复和改进以及性能改进。

本文介绍了如何在现代Debian系统和Ubuntu系统上安装PHP 8.3。一些最流行的PECL扩展也可以以类似的方式安装,这些扩展在安装PECL扩展部分中列出。

Debian(10、11和12)

代码语言:javascript
复制
# Save existing php package list to packages.txt file
sudo dpkg -l | grep php | tee packages.txt

# Add Ondrej's repo source and signing key along with dependencies
sudo apt install apt-transport-https
sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo apt update

# Install new PHP 8.3 packages
sudo apt install php8.3 php8.3-cli php8.3-{bz2,curl,mbstring,intl}

# Install FPM OR Apache module
sudo apt install php8.3-fpm
# OR
# sudo apt install libapache2-mod-php8.3

# On Apache: Enable PHP 8.3 FPM
sudo a2enconf php8.3-fpm
# When upgrading from an older PHP version:
sudo a2disconf php8.2-fpm

# Remove old packages
sudo apt purge php8.2*

Ubuntu(20.04、22.04和24.04)

代码语言:javascript
复制
## Save existing php package list to packages.txt file
sudo dpkg -l | grep php | tee packages.txt

# Add Ondrej's PPA
sudo add-apt-repository ppa:ondrej/php # Press enter when prompted.
sudo apt update

# Install new PHP 8.3 packages
sudo apt install php8.3 php8.3-cli php8.3-{bz2,curl,mbstring,intl}

# Install FPM OR Apache module
sudo apt install php8.3-fpm
# OR
# sudo apt install libapache2-mod-php8.2

# On Apache: Enable PHP 8.3 FPM
sudo a2enconf php8.3-fpm
# When upgrading from an older PHP version:
sudo a2disconf php8.2-fpm

## Remove old packages
sudo apt purge php8.2*

安装

1、安装准备

当前的Debian和Ubuntu版本都没有在默认软件库中包含PHP 8.3。预构建的PHP包可以从Ondinej Survival维护的存储库中获得,本文使用该存储库。此存储库中的包遵循与OS软件存储库提供的PHP包相同的包配置、包名称和 systemd 配置。

以下操作将作为 sudo 执行,并且需要该级别的权限才能继续。在进行任何系统范围的更改时,通常的警告也适用于此。请确保备份系统并在继续之前检查备份。升级时,不要忘记将配置迁移到新的PHP版本。

2、列出并记录现有的PHP软件包

当升级一个现有的PHP版本时,下面的命令会列出所有在包名中带有 php 的包,并将其保存到 packages.txt 文件中,同时在终端中打印。

这将有助于在接下来的步骤中安装相应的PHP 8.3包。

在新系统上安装PHP时不需要此步骤。

代码语言:javascript
复制
dpkg -l | grep php | tee packages.txt

3、添加 ondrej/php 存储库

PHP 8.3不能从任何当前的Debian或Ubuntu软件库下载。Debian和Ubuntu软件库由Ondiej Survival维护,包含主要的PHP 8.3软件包和几个流行的PECL软件包,它们都是最新的。

在Ubuntu上,软件包只构建在LTS版本上。此步骤将在非LTS Ubuntu版本(如Ubuntu 22.10)上失败。

以下命令将存储库添加到软件存储库列表中,并运行 apt update 以从新存储库以及现有存储库获取可用软件包列表。

Debian

代码语言:javascript
复制
sudo apt install apt-transport-https
sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo apt update

Ubuntu

代码语言:javascript
复制
sudo add-apt-repository ppa:ondrej/php # Press enter when prompted.
sudo apt update

4、安装新的PHP 8.3包

添加了Ondrej的PHP存储库后,现在可以使用 apt 安装PHP包。所有PHP 8.3包都遵循 php8.3-XYZ 模式。这些名称匹配并覆盖由操作系统自己的软件存储库提供的PHP版本。

代码语言:javascript
复制
sudo apt install php8.3-common php8.3-cli php8.3-fpm php8.3-{curl,bz2,mbstring,intl}
  • php8.3-common 包是一个元包,它安装了几个PHP扩展。以后可以有选择地禁用各个扩展。PHP核心扩展,如Date,Phar,JSON,ctype和random总是包含在内。没有必要也不可能将它们作为单独的软件包安装。
  • 除了安装 php8.3-common ,也可以安装单个软件包。安装 php8.3-common 大致相当于安装所有扩展,如下所示:
代码语言:javascript
复制
apt  install php8.3-{calendar,ctype,exif,ffi,fileinfo,ftp,gettext,iconv,pdo,phar,posix,shmop,sockets,sysvmsg,sysvsem,sysvshm,tokenizer}
  • php8.3-cli 安装PHP CLI,并将 /usr/bin/php 符号链接到 /usr/bin/php8.3 。请参阅运行PHP 8.3以及其他版本以获取更多信息。
  • php8.3-fpm 安装PHP的FPM SAPI用于Web服务器集成。有关替代方法,请参见Web服务器集成。

5、其他PHP扩展

存储库中还提供了几个PECL扩展,可以方便地安装它们,而无需编译它们。这包括一些更流行的PECL扩展,如Image Magick,APCu和Xdebug。

下面是一些PECL扩展及其包名称,将与 apt install 一起使用以进行安装。

请注意,这些PECL扩展是由个人开发人员/团队开发的,可能没有经过很好的测试。上传这些包也可能需要一些时间,等待相应扩展开发的兼容性修复。

以下是对 apt 的简单搜索:

代码语言:javascript
复制
sudo apt search php8.3-apcu # Search for "apcu" under PHP 8.3

6、Web服务器集成

在大多数用例中,PHP与Web服务器集成。通过FastCGI协议与PHP-FPM集成是最常见的方法,同时也可以将PHP与其他SAPIs集成。

在安装 php8.3-fpm 包时,如果Apache Web服务器( apache2 )存在,则会有一个新的 php8.3-fpm.conf 文件,以便切换PHP 8.3集成:

代码语言:javascript
复制
sudo a2enconf php8.3-fpm
sudo a2disconf php8.2-fpm # When upgrading from an older PHP version
sudo systemctl restart apache2

当Apache配置为将PHP作为Apache模块(通常称为 mod_phpmod_php8 )运行时,安装 libapache2-mod-php8.3 包而不是 php8.3-fpm

代码语言:javascript
复制
sudo apt install libapache2-mod-php8.3
sudo a2enmod php8.3
sudo a2dismod php8.2 # When upgrading from an older PHP version
sudo systemctl restart apache2

Nginx,Caddy,Litespeed和其他服务器通过Fast CGI

php8.3-fpm 安装PHP-FPM,并在套接字地址 /run/php/php8.3-fpm.sock 为PHP 8.3 FPM注册 systemd 服务。

对于通过FastCGI与PHP集成的Web服务器,请将UNIX套接字路径更改/配置为此UNIX套接字地址。

例如,在Nginx上,这涉及到更改 fastcgi_pass 指令:

7、测试PHP 8.3安装

安装完所有的软件包后,到了关键时刻,看看新的安装是否成功。

在终端中运行 php -v 应该会显示如下内容:

模块列表可以用 php -m 列出。这个列表将包括几个捆绑的PHP扩展。有关将PHP INI指令和启用的扩展迁移到新PHP版本的信息,请参见迁移配置。

8、迁移配置

此步骤仅适用于从较旧的PHP版本更新到PHP 8.3时

新的PHP 8.3安装的配置文件位于 /etc/php/8.3 目录。现有的PHP安装也应该在 /etc/php 目录中。

不要将现有的PHP INI文件复制到 /etc/php/8.3 。相反,比较两个相应的PHP INI文件,并仅在必要时更新PHP 8.3变体。

请参阅PHP 8.3中的新增和更改,以查看已弃用的INI指令和PHP 8.3中添加的新INI指令。

使用PHP-FPM时,请确保复制正确数量的FPM流程和流程模型。

phpenmodphpdismod 脚本为PHP模块提供了大陆切换。例如,下面的代码禁用了PHP 8.3上FPM的 phar 扩展:

代码语言:javascript
复制
sudo phpdismod -v 8.3 -s fpm phar 

完成更改后,重新启动PHP 8.3-FPM:

代码语言:javascript
复制
sudo systemctl restart php8.3-fpm

9、删除旧的PHP版本

此步骤仅适用于从较旧的PHP版本更新到PHP 8.3时

要删除旧的PHP版本,请使用PHP版本前缀运行 apt purge 。例如,下面的代码删除了PHP 8.2的包和配置:

代码语言:javascript
复制
sudo apt purge php8.2*
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • Debian(10、11和12)
  • Ubuntu(20.04、22.04和24.04)
  • 安装
    • 1、安装准备
      • 2、列出并记录现有的PHP软件包
        • 3、添加 ondrej/php 存储库
          • Debian
          • Ubuntu
        • 4、安装新的PHP 8.3包
          • 5、其他PHP扩展
            • 6、Web服务器集成
              • 7、测试PHP 8.3安装
                • 8、迁移配置
                  • 9、删除旧的PHP版本
                  相关产品与服务
                  对象存储
                  对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档