首先提供一个需要开启的PHP扩展清单,基于WordPress运行的必要性以及强烈推荐的插件。这些扩展有助于提升WordPress站点的稳定性和性能优化。
建议✅开启的扩展如下:
bcmath Core ctype curl date dom exif fileinfo filter hash iconv igbinary imagick intl json libxml mbstring mysqli mysqlnd openssl pcre PDO pdo_mysql Phar random redis Reflection session SimpleXML SPL standard tokenizer xml xmlreader xmlwriter Zend OPcache zip zlib
建议❌禁用的扩展如下:
apcu memcache memcached gd imap smtp sockets readline pdo_dblib pdo_sqlite sqlite3 posix shmop xdebug
这个清单中的大部分扩展是PHP官方镜像中默认自带的,但不同的PHP版本或镜像源在安装时可能会有所不同。安装好PHP后,可以通过命令php -m
查看已安装的PHP扩展。根据这个清单,有些默认的扩展建议删除,有些需要手动安装,还有一些扩展需要根据实际情况选择其一。
接下来,我将介绍一些重要的PHP扩展,以加深对它们在WordPress中重要性和作用的理解。在选择扩展时,可以根据这些介绍作为依据,避免不必要的纠结,从而更好地优化网站性能。
一、对象缓存 / 性能加速类
对象缓存三选一:APCu、Redis、Memcached
APCu、Redis、Memcached 这三款都是对象缓存,其功能相似没有必要都启用,因此三选一即可。
□ APCu:主要是用来缓存PHP的opcode和数据,适合单服务器环境,不需要分布式的情况。
☑ Redis:是一个独立的键值存储,支持数据持久化,分布式键值缓存,适合需要持久化或复杂数据结构的场景。
□ Memcache / Memcached:都是用来连接Memcached服务的,但memcached扩展功能更全,支持更多特性,比如二进制协议和更好的服务器管理。
进一步了解如何三选一,那可以看看我另一篇笔记:[[PHP对象缓存三选一怎么选?详细对比APCu、Redis、Memcached]]
性能加速
☑ OPcache(必须开启):其全名或模块名就是清单中的:Zend OPcache,因它是 Zend 引擎的一部分,主要作用是:缓存 PHP 字节码(opcode),显著提升性能。
☑ igbinary:为 Redis/Memcached 提供更高效的序列化方式。适合需要优化缓存性能的应用。
二、图像处理 / 文件操作类
图像处理
□ gd:基础图像处理,如缩略图、水印(轻量)和imagick一样属于[[PHP图片压缩扩展]],列表中启用了imagick,同类型的功能重复可以关闭。
☑ imagick :更强大的图像处理功能,支持更多格式和滤镜。适合需要处理大量图像的应用,如电商网站的产品图片处理。
☑ Exif:图像元信息(如方向、拍摄设备),适合移动图片旋转识别。提取图像元数据,适合需要处理照片信息的应用,如图像库和社交媒体平台。
文件操作
☑ Fileinfo:检测文件 MIME 类型,适合需要验证上传文件类型的应用,如文件上传功能。
☑ Zip:压缩、解压,插件安装和导出等常用。
☑ Zlib:压缩、解压,插件安装和导出等常用。
☑ Phar:打包和解包 .phar 文件(如 WP-CLI 使用)。
三、网络 / 邮件 / 通信类
网络类
☑ cURL:发起 HTTP(S) 请求,访问 API、远程资源(如 REST 接口)适合需要与外部API交互的应用,如获取天气数据或社交媒体信息。
☑ OpenSSL:加密/解密功能,支持 HTTPS、SMTP TLS 等
☑ mbstring:多字节字符串处理(UTF-8 网页文本、API 数据),适合需要支持多种语言的应用,如国际化网站。
☑ intl:国际化处理,如日期、货币、语言等,涉及网络内容本地化
邮件类
大多数 WordPress 邮件发送插件用 PHPMailer 实现 SMTP,不依赖这个扩展,PHPMailer也是wordpress内置的功能。若不使用从邮箱拉取邮件(如 IMAP 登录、邮件通知集成),可禁用imap。smtp- 是一个非常古老的 PHP 扩展,提供基本 SMTP 协议能力,但功能有限、安全性差(不支持加密传输)所以也可禁用。
□ imap:提供收发邮件功能,支持 IMAP/POP3 协议。
□ smtp:提供简单邮件传输协议功能(已过时)
通信类
□ sockets:提供底层 Socket 操作能力,用于创建 TCP/UDP 连接
适合有自定义网络通信需求的高级应用,部分 SMTP 插件或自建服务可能用。WordPress 几乎不会用到。
□ Readline:提供 CLI 交互命令行支持,常用于终端下交互式 PHP 脚本(和网站无关),不影响网站运行。
四、数据库访问类
☑ mysqli:MySQL 原生驱动,WordPress 默认使用
☑ mysqlnd:MySQL 原生驱动库提供更好的性能,适合需要高效数据库访问的应用。(默认启用)
☑ PDO:更通用的数据库访问方式,适合需要支持多种数据库的应用。
☑ pdo_mysql:PDO的MySQL驱动。
□ pdo_dblib:用于连接 Microsoft SQL Server(通过 FreeTDS 库)
WordPress 使用 MySQL/MariaDB,无需 SQL Server 支持。
□ pdo_sqlite:SQLite 支持(WordPress 默认不需要) 默认使用的是 MySQL,不使用 SQLite。除非这个php环境还运行着其他需要用SQLite的应用,否则关掉。
□ sqlite3:SQLite 支持(WordPress 默认不需要) 默认使用的是 MySQL,不使用 SQLite。除非这个php环境还运行着其他需要用SQLite的应用,否则关掉。
五、XML / 数据解析类
☑ libxml:XML 基础库,其他模块依赖,适合需要解析和处理XML数据的应用,如数据交换和配置文件解析。
☑ DOM:支持 DOMDocument 类,用于操作XML和HTML文档,适合需要解析和生成XML/HTML内容的应用。插件常用,如RSS聚合器。
☑ SimpleXML:简洁的 XML 解析方式
☑ XMLReader:低内存读大型 XML 文件
☑ XMLWriter:低内存写大型 XML 文件
☑ json:用于编码和解码JSON数据,适合需要与JavaScript交互的应用,广泛用于网络数据交互(如 REST API)单页应用(SPA)。
六、系统 / CLI / 安全类
☑ standard:核心语言功能,所有PHP应用都需要,无法禁用。
☑ SPL:核心语言功能,标准PHP库,提供多种数据结构和迭代器,无法禁用。
☑ ctype:字符类型判断(如是否为字母)用于验证和处理字符类型,适合需要处理用户输入的场景,如表单验证。
☑ filter:用于数据过滤和验证,适合需要确保用户输入安全的应用,如表单处理。
☑ tokenizer:用于代码分析、自动补全(开发环境用)适合需要代码高亮和自动补全的开发工具。
☑ Reflection:反射 API,PHP 内部依赖
□ posix:系统资源管理类函数,非 CLI 工具不需要
□ shmop:共享内存操作(极少见)扩展,允许多个进程读写同一段内存区域,非常底层的优化工具,用于自定义 C 级性能共享数据结构。多进程通信、写入临时共享数据(主要用于底层开发或系统级服务)。
七、其他扩展
☑ Core:PHP 核心功能模块(语言本身)它并不是单独的扩展,而是你运行 PHP 的“基础引擎”。所有PHP应用都需要,无法禁用。
☑ random:安全随机数支持,核心函数。 PHP 8.2 起新增的随机数生成扩展,提供更加安全和统一的随机接口,如 random_int()、random_bytes(),替代早期 mt_rand() 等。
☑ bcmath:高精度数学运算扩展,一些电商/积分类插件会用到高精度运算。适用于需要进行高精度数学运算的场景,如电商网站的价格计算和金融应用。
☑ session:PHP 会话管理扩展,实现 $_SESSION
全局变量支持,保存用户登录状态、购物车、后台认证等,WordPress 核心默认不用,但很多插件(如 WooCommerce、会员系统)会用。
□ xdebug:调试器与性能分析工具,支持断点调试、函数跟踪、代码覆盖率分析等。在生产环境中占用较多资源,建议在开发环境中使用。
☑ date:处理日期和时间,适合需要时间戳或日期格式化的应用,如日历和事件管理系统。
☑ hash:生成哈希值,适合需要数据完整性验证的应用,如密码存储和文件校验。
☑ iconv:字符编码转换,适合需要处理多种字符编码的应用,如国际化网站。
后记
最近在对服务器优化,把关于PHP扩展部分的内容做了一个整理。文中如有错误请指教🙏🙏原始笔记会在自己博客上发布,后续会在其他平台发布,也许会对文章格式略作调整,提升一下阅读体验。原创文章,欢迎转载请保留作者署名和本文链接。
本文由 Qyet 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Jul 10, 2025 at 09:01 am