0

0

CentOS 7.2 + PHP 7.3 中 GD 扩展加载失败的完整解决方案

花韻仙語

花韻仙語

发布时间:2026-02-05 11:51:01

|

810人浏览过

|

来源于php中文网

原创

CentOS 7.2 + PHP 7.3 中 GD 扩展加载失败的完整解决方案

本文详解 centos 7.2 环境下安装 php-gd 后出现 “unable to load dynamic library 'gd'” 及 `libraqm.so.0: undefined symbol: hb_ft_font_set_load_flags` 错误的根本原因与实操修复步骤,核心在于系统版本过旧导致 harfbuzz、fribidi 等依赖库 abi 不兼容。

在 CentOS 7.2(2015 年发布)上安装 php-gd 后,即使 gd.so 文件存在且权限正确,PHP 仍报错:

PHP Warning:  PHP Startup: Unable to load dynamic library 'gd' 
(tried: /usr/lib64/php/modules/gd (...), /usr/lib64/php/modules/gd.so 
(/lib64/libraqm.so.0: undefined symbol: hb_ft_font_set_load_flags))

该错误并非 GD 扩展本身配置问题,而是典型的运行时符号链接断裂(symbol resolution failure):libraqm.so.0 尝试调用 hb_ft_font_set_load_flags 函数,但当前系统中安装的 harfbuzz 版本(0.9.36)太旧,不包含该符号——该函数首次出现在 HarfBuzz 1.3.2+(对应 CentOS 7.4 起源),而 CentOS 7.2 的默认仓库仅提供 0.9.36。

? 根本原因分析

组件 CentOS 7.2 状态 最低兼容要求 说明
harfbuzz 0.9.36-1.el7(EOL) ≥ 1.3.2(CentOS 7.4+) hb_ft_font_set_load_flags 是 FreeType 2.8+ 与 HarfBuzz 1.3+ 协同引入的渲染控制函数
fribidi 1.0.2-0.el7.remi(来自 remi-safe) 需与 harfbuzz ABI 匹配 混合使用不同源(base vs remi)的 fribidi/libraqm 易引发符号冲突
libraqm 0.7.0-4.el7(EPEL) 依赖 harfbuzz ≥ 1.3.2 其构建时链接了新版 HarfBuzz 符号表,但运行时找不到
✅ 验证方式: # 检查 harfbuzz 是否导出目标符号 nm -D /usr/lib64/libharfbuzz.so.0 | grep hb_ft_font_set_load_flags # CentOS 7.2 输出为空;7.9 输出类似:000000000004a2b0 T hb_ft_font_set_load_flags

✅ 正确解决方案:升级系统 + 统一软件源

步骤 1:强制升级 CentOS 至最新维护版本(推荐)

CentOS 7.2 已于 2017 年终止生命周期(EOL),缺失 7 年安全补丁,直接升级是唯一可靠路径

# 更新系统至最新点版本(如 7.9)
sudo yum update -y

# 验证升级结果
cat /etc/centos-release  # 应输出:CentOS Linux release 7.9.2009 (Core)

# 清理旧缓存并重装 gd(确保依赖链一致)
sudo yum clean all
sudo yum reinstall php-gd gd-last libraqm fribidi harfbuzz -y

升级后关键组件版本应为:

立即学习PHP免费学习笔记(深入)”;

php商城系统
php商城系统

PHP商城系统是国内功能优秀的网上商城系统,同时也是一个商业的PHP开发框架,有多套免费模版,强大的后台管理功能,专业的网上商城系统解决方案,快速建设网上购物商城、数码商城、手机商城、办公用品商城等网站。 php商城系统v3.0 rc6升级 1、主要修复用户使用中出现的js未加载完报错问题,后台整改、以及后台栏目的全新部署、更利于用户体验。 2、扩展出,更多系统内部的功能,以便用户能够迅速找到需

下载
  • harfbuzz-1.7.5-2.el7.x86_64
  • fribidi-1.0.2-1.el7_7.1.x86_64(注意 .el7_7.1 表示来自 7.7+ 仓库)
  • libraqm-0.7.0-4.el7.x86_64
  • gd-last-2.3.3-2.el7.remi.x86_64

步骤 2:验证 GD 扩展正常工作

# 检查无警告启动
php -v 2>/dev/null && echo "✅ PHP 启动成功"

# 查看 GD 模块详情
php --ri gd

# 或检查模块列表
php -m | grep gd  # 应输出:gd

预期输出包含 GD Support => enabled 及完整特性列表(FreeType、JPEG、PNG、WebP 等均 enabled)。

⚠️ 替代方案(不推荐,仅限无法升级环境)

若因特殊限制必须停留在 CentOS 7.2,可尝试 降级 libraqm 并禁用复杂文本布局,但会牺牲 GD 的 Unicode 文本渲染能力:

# 1. 移除冲突包
sudo yum remove libraqm php-gd -y

# 2. 从 EPEL 7.2 仓库手动下载旧版 libraqm(需离线环境)
# wget http://archive.kernel.org/epel/7/x86_64/Packages/l/libraqm-0.5.0-1.el7.x86_64.rpm
# sudo rpm -Uvh libraqm-0.5.0-1.el7.x86_64.rpm

# 3. 重新安装 GD(不启用 Raqm)
sudo yum install php-gd --disableexcludes=main -y

❗ 注意:此方案可能导致 imagefttext() 等函数在处理阿拉伯/印度文字时崩溃,且无法保证长期稳定。

? 总结与最佳实践

  • 永远避免在 EOL 系统(如 CentOS 7.2)上部署新应用:安全风险高,兼容性问题频发;
  • PHP 7.3 本身已于 2021 年 12 月停止维护,建议同步升级至 PHP 8.0+(配合 Remi 仓库);
  • 使用 yum update 前,确认 base、epel、remi-* 仓库启用状态一致,避免混合源导致 ABI 冲突;
  • 生产环境务必通过 php --ri gd 和简单图像生成脚本(如 )双重验证。

完成上述操作后,php -v 将不再报错,GD 扩展可正常用于图像处理、验证码生成、图表绘制等场景。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
undefined是什么
undefined是什么

undefined是代表一个值或变量不存在或未定义的状态。它可以作为默认值来判断一个变量是否已经被赋值,也可以用于设置默认参数值。尽管在不同的编程语言中,undefined可能具有不同的含义和用法,但理解undefined的概念可以帮助我们更好地理解和编写程序。本专题为大家提供undefined相关的各种文章、以及下载和课程。

5477

2023.07.31

网页undefined是什么意思
网页undefined是什么意思

网页undefined是指页面出现了未知错误的意思,提示undefined一般是在开发网站的时候定义不正确或是转换不正确,或是找不到定义才会提示undefined未定义这个错误。想了解更多的相关内容,可以阅读本专题下面的文章。

3120

2024.08.14

网页undefined啥意思
网页undefined啥意思

本专题整合了undefined相关内容,阅读下面的文章了解更多详细内容。后续继续更新。

835

2025.12.25

centos
centos

PHP中文网为大家提供centos相关信息,CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一,是免费的、开源的、可以重新分发的开源操作系统,PHP中文网提供centos相关文章,以及安装教程。

435

2023.06.16

常见的linux系统有哪些
常见的linux系统有哪些

linux系统有Ubuntu、Fedora、CentOS、Debian、openSUSE、Arch Linux、Gentoo、Slackware、Linux Mint、Kali Linux。更多关于linux系统的文章详情请阅读本专题下面的文章。php中文网欢迎大家前来学习。

821

2023.10.27

C++ 多线程编程与线程池设计
C++ 多线程编程与线程池设计

本专题深入讲解 C++ 中的多线程编程与线程池设计,涵盖 C++11/14/17 的线程库、线程同步机制(mutex、condition_variable、atomic)、线程池设计模式、任务调度与优化、并发瓶颈分析与解决方案。通过多个实际案例,帮助开发者掌握 如何设计高效的线程池管理系统,提升 C++ 程序在高并发场景下的性能与稳定性。

0

2026.02.05

微信网页版文件传输助手教程合集
微信网页版文件传输助手教程合集

本专题整合了微信网页版文件传输助手教程、入口等等内容,阅读专题下面的文章了解更多详细内容。

15

2026.02.04

微信文件过期恢复教程
微信文件过期恢复教程

本专题整合了微信文件过期恢复方法、技巧教程,阅读专题下面的文章了解更多详细内容。

10

2026.02.04

抖音网页版入口与视频观看指南 抖音官网视频在线访问
抖音网页版入口与视频观看指南 抖音官网视频在线访问

本专题汇总了抖音网页版的入口链接、官方登录页面以及视频观看入口,帮助用户快速访问抖音网页版,提供免登录访问方式和直接进入视频播放页面的方法,确保顺利浏览和观看抖音视频。

95

2026.02.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 11.1万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.2万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号