Debian 12 默认的PHP版本为 8+,如果要在Debian 12 安装 PHP7.4,要么通过编译安装,要么使用第三方软件源安装,本文介绍使用第三方软件源安装
一、更新软件源
apt update
apt upgrade -y
二、添加 SURY PHP PPA 软件源
默认的 Debian 12 存储库包含 PHP 8.3 和 PHP 7.4 软件包,但不包含其他版本,如 PHP 8.1、7.3、7.2 或 5.6。因此,我们建议添加第三方存储库 Ondřej Surý 的 PHP 存储库,它提供最新的 PHP 软件包。运行以下命令添加存储库。
SURY PHP PPA 是一个由 Ondřej Surý 维护的个人包档案(PPA),专门用于在 apt 系统上提供最新版本的 PHP 和相关扩展。虽然这是一个个人维护的 PPA,但由于其广泛使用和良好的声誉,社区对其稳定性和安全性有较高的认可。
sudo apt install -y apt-transport-https lsb-release ca-certificates wget
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
然后更新系统软件源。
apt update
三、开始安装 PHP
1.这里其实不止可以安装 PHP7.4,还可以安装 PHP 5.6等其它版本,运行以下命令,可以查看可安装的PHP版本。
apt-cache search php | grep "^php[0-9]\.[0-9]-fpm" | grep -v "dbgsym"

2.运行以下命令,可以查看可安装的PHP扩展有哪些
apt list | grep ^php7.4 | grep -v "dbgsym"
3.开始安装PHP7.4,可以分多个命令分别安装,也可以将命令组合在一起安装(如果失败,可尝试运行多次,基本是由于网络原因造成的)
sudo apt install -y php7.4 php7.4-cli php7.4-common php7.4-fpm php7.4-mysql php7.4-dom php7.4-simplexml php7.4-ssh2 php7.4-xml
sudo apt install -y php7.4-xmlreader php7.4-curl php7.4-exif php7.4-ftp php7.4-gd php7.4-iconv php7.4-imagick php7.4-json
sudo apt install -y php7.4-mbstring php7.4-posix php7.4-sockets php7.4-tokenizer php7.4-mysqli php7.4-pdo php7.4-sqlite3 php7.4-ctype php7.4-fileinfo
sudo apt install -y php7.4-zip php7.4-opcache php7.4-soap php7.4-xmlrpc php7.4-intl php7.4-bz2 php7.4-xsl
sudo apt install -y php7.4-bcmath php7.4-http php7.4-imap php7.4-mailparse php7.4-redis php7.4-yaml php7.4-raphf php7.4-propro
四、验证安装
php -v
这应该会显示当前系统上活动的 PHP 版本。如果正确安装了 PHP 7.4,它将反映在此处。

五、切换 PHP 版本(可选)
如果您安装了多个版本的 PHP,则可以使用 update-alternatives 命令在它们之间切换。例如,要切换到 PHP 7.4,您可以使用:
sudo update-alternatives --set php /usr/bin/php7.4
要切换回 PHP 8.3,请将 php7.4 替换为 php8.3
六、与Nginx服务器集成
1.修改php7.4 配置,修改下图位置,将用户及用户组修改和 nginx 相同的用户和用户组 www
vim /etc/php/7.4/fpm/pool.d/www.conf

2.确保 /run/php/php7.4-fpm.sock 下的文件 权限没有问题,将其所属用户和用户组修改为 www
chown www:www /run/php/php7.4-fpm.sock

3.修改nginx的配置,将所有的 fastcgi_pass 修改为 unix:/run/php/php7.4-fpm.sock
; 如果您的nginx是参考上文安装的,则您需要修改以下两个文件
vim /usr/local/nginx/conf/enable-php.conf

vim /usr/local/nginx/conf/enable-php-pathinfo.conf

七、设置开机自动启动
# 首先停止PHP-FPM,注意这里的命令和下面的不一样
service php7.4-fpm stop
# 设置为开机启动:
systemctl enable php7.4-fpm
# 启动PHP-FPM
systemctl start php7.4-fpm
停止 PHP-FPM 服务:
systemctl stop php7.4-fpm
重启 PHP-FPM 服务:
systemctl restart php7.4-fpm
八、创建站点,并输出phpinfo内容
1.编辑 /usr/local/nginx/conf/vhost/dev.com.conf 配置文件,增加对 php 的支持

2.删除 /server/www/dev.com/index.html 文件,创建 index.php 文件,并写入以下代码
<?php
phpinfo();
3.重新加载Nginx服务,然后访问 www.dev.com 即可看到 phpinfo 的信息
systemctl reload nginx
九、关于PHP7.4部分扩展的说明
php7.4-amqp: 提供对 AMQP 消息队列协议的支持,用于与消息代理(如 RabbitMQ)进行通信。
php7.4-apcu-bc: APCu 扩展的向后兼容模块,提供对旧版 APC 扩展的兼容性。
php7.4-apcu: 提供用户数据缓存功能,允许在内存中缓存数据以提高性能。
php7.4-ast: 提供对 PHP 抽象语法树的访问,常用于代码分析和静态分析工具。
php7.4-bcmath: 提供对任意精度数学运算的支持,通常用于需要高精度计算的场合。
php7.4-bz2: 提供对 bzip2 压缩算法的支持,用于压缩和解压缩数据。
php7.4-cgi: 提供 CGI 接口的支持,用于通过 CGI 协议运行 PHP 脚本。
php7.4-cli: 提供命令行接口,允许在终端中运行 PHP 脚本。
php7.4-common: 包含 PHP 的常用库和依赖项,是其他 PHP 扩展的基础。
php7.4-curl: 提供对 libcurl 库的支持,用于通过多种协议(如 HTTP、FTP)进行数据传输。
php7.4-dba: 提供对数据库抽象层的支持,允许对多种数据库格式进行操作。
php7.4-decimal: 提供对高精度十进制数学运算的支持,适用于金融计算。
php7.4-dev: 包含开发 PHP 扩展所需的头文件和工具。
php7.4-dio: 提供对直接 I/O 操作的支持,允许直接读写文件描述符。
php7.4-ds: 提供数据结构扩展,包含多种数据结构如向量、队列、映射等。
php7.4-enchant: 提供对拼写检查库 Enchant 的支持。
php7.4-excimer: 用于性能分析和调试,通过采样分析帮助识别性能瓶颈。
php7.4-fpm: 提供 FastCGI 进程管理器,用于高效管理 PHP 进程,通常用于生产环境。
php7.4-gd: 提供图像处理功能,允许创建和操作图像。
php7.4-gearman: 提供对 Gearman 任务分发系统的支持,用于分布式任务处理。
php7.4-geoip: 提供对 GeoIP 数据库的支持,用于根据 IP 地址获取地理位置。
php7.4-gmagick: 提供对 GraphicsMagick 图像处理库的支持。
php7.4-gmp: 提供对 GNU MP 库的支持,用于任意精度整数运算。
php7.4-gnupg: 提供对 GnuPG 加密工具的支持,用于加密、解密和签名操作。
php7.4-grpc: 提供对 gRPC 协议的支持,用于高效的远程过程调用。
php7.4-http: 提供扩展的 HTTP 功能支持,如请求和响应对象。
php7.4-igbinary: 提供替代的序列化机制,比 PHP 内置的序列化更快更紧凑。
php7.4-imagick: 提供对 ImageMagick 图像处理库的支持。
php7.4-imap: 提供对 IMAP、POP3 和 NNTP 协议的支持,用于电子邮件操作。
php7.4-inotify: 提供对 Linux inotify 文件系统事件监控的支持。
php7.4-interbase: 提供对 InterBase 和 Firebird 数据库的支持。
php7.4-intl: 提供国际化和本地化功能,依赖 ICU 库。
php7.4-json: 提供对 JSON 数据格式的编码和解码支持。
php7.4-ldap: 提供对 LDAP 协议的支持,用于与目录服务交互。
php7.4-libvirt-php: 提供对 libvirt 虚拟化 API 的支持。
php7.4-lua: 提供对 Lua 脚本语言的嵌入支持。
php7.4-lz4: 提供对 LZ4 压缩算法的支持。
php7.4-mailparse: 提供对 MIME 电子邮件解析的支持。
php7.4-maxminddb: 提供对 MaxMind DB 格式的支持,用于地理定位。
php7.4-mbstring: 提供多字节字符串处理功能,特别适用于处理非 ASCII 字符。
php7.4-mcrypt: 提供对 mcrypt 加密库的支持(已被弃用,但仍在某些环境中使用)。
php7.4-memcache: 提供对 Memcache 缓存系统的支持。
php7.4-memcached: 提供对 Memcached 缓存系统的支持,功能更强大。
php7.4-mongodb: 提供对 MongoDB 数据库的支持。
php7.4-msgpack: 提供对 MessagePack 数据格式的支持,比 JSON 更紧凑。
php7.4-mysql: 提供对 MySQL 数据库的支持。
php7.4-oauth: 提供对 OAuth 协议的支持,用于授权访问。
php7.4-odbc: 提供对 ODBC 数据源的支持。
php7.4-opcache: 提供字节码缓存功能,提高 PHP 脚本执行速度。
php7.4-pcov: 提供代码覆盖率分析功能。
php7.4-pgsql: 提供对 PostgreSQL 数据库的支持。
php7.4-phalcon4: 提供 Phalcon 4 框架的支持。
php7.4-phalcon5: 提供 Phalcon 5 框架的支持。
php7.4-phpdbg: 提供 PHP 调试工具,用于调试 PHP 脚本。
php7.4-pinba: 提供对 Pinba 监控系统的支持,用于性能分析。
php7.4-pq: 提供对 PostgreSQL 的更高效接口。
php7.4-propro: 提供对象属性的原型管理,用于扩展开发。
php7.4-protobuf: 提供对 Protocol Buffers 的支持,用于高效的数据序列化。
php7.4-ps: 提供对 PostScript 文档的支持。
php7.4-pspell: 提供对拼写检查库 Pspell 的支持。
php7.4-psr: 提供对多个 PSR 接口的实现,包括日志和缓存。
php7.4-radius: 提供对 RADIUS 协议的支持,用于网络认证。
php7.4-raphf: 提供资源和持久化句柄工厂,用于扩展开发。
php7.4-rdkafka: 提供对 Apache Kafka 消息队列的支持。
php7.4-readline: 提供命令行输入历史记录和编辑功能。
php7.4-redis: 提供对 Redis 数据库的支持。
php7.4-rrd: 提供对 RRDTool 数据库的支持,用于时间序列数据存储。
php7.4-smbclient: 提供对 SMB/CIFS 协议的支持,用于文件共享。
php7.4-snmp: 提供对 SNMP 协议的支持,用于网络管理。
php7.4-soap: 提供对 SOAP 协议的支持,用于 Web 服务。
php7.4-solr: 提供对 Apache Solr 搜索平台的支持。
php7.4-sqlite3: 提供对 SQLite3 数据库的支持。
php7.4-ssh2: 提供对 SSH2 协议的支持,用于安全远程登录。
php7.4-stomp: 提供对 STOMP 消息协议的支持。
php7.4-sybase: 提供对 Sybase 数据库的支持。
php7.4-tideways: 提供性能分析和监控功能。
php7.4-tidy: 提供对 HTML Tidy 库的支持,用于清理和修复 HTML 文档。
php7.4-uopz: 提供对用户操作的扩展,用于修改 PHP 脚本行为。
php7.4-uploadprogress: 提供文件上传进度监控功能。
php7.4-uuid: 提供对 UUID 生成和管理的支持。
php7.4-vips: 提供对 libvips 图像处理库的支持。
php7.4-xdebug: 提供调试和分析工具,用于开发和测试。
php7.4-xhprof: 提供轻量级的性能分析功能。
php7.4-xml: 提供对 XML 文档解析和处理的支持。
php7.4-xmlrpc: 提供对 XML-RPC 协议的支持,用于远程过程调用。
php7.4-xsl: 提供对 XSLT 转换的支持。
php7.4-yac: 提供对 Yet Another Cache (YAC) 的支持,提供简单的键值缓存。
php7.4-yaml: 提供对 YAML 数据格式的解析和生成支持。
php7.4-zip: 提供对 ZIP 压缩文件的支持。
php7.4-zmq: 提供对 ZeroMQ 消息传递库的支持。
php7.4-zstd: 提供对 Zstandard 压缩算法的支持。