PHP7.0环境下GD库已启用却无法检测到的问题求助
问题原因分析
你的问题主要出在两个核心点上:
- Kubuntu 17.10 已停止官方支持:Artful Aardvark(17.10)早在2018年就结束了生命周期,官方软件源不再维护,所以
php7.0-gd包已被从源中移除,自然找不到安装候选。 - PHP.ini 配置格式错误:你修改的配置里写的是Windows系统的
.dll扩展格式,但Linux下PHP扩展的后缀是.so;而且Debian/Ubuntu系的PHP扩展通常通过conf.d目录下的配置文件自动加载,不需要手动在php.ini里开启。
解决方案
这里提供两种可行路径,你可以根据需求选择:
方案一:升级PHP到7.1(推荐)
你的系统源里已经有PHP7.1的完整包,且php-gd已经默认安装到7.1版本,直接升级是最省心的选择:
- 安装PHP7.1及对应GD模块:
sudo apt-get install libapache2-mod-php7.1 php7.1-cli php7.1-gd - 切换Apache的PHP模块到7.1:
sudo a2dismod php7.0 sudo a2enmod php7.1 sudo systemctl restart apache2 - 验证:访问
phpinfo()页面,或者运行你的检测脚本,就能看到GD库已正常加载。
方案二:修复源并安装PHP7.0-gd(不推荐,仅测试环境用)
如果必须保留PHP7.0,需要切换到Ubuntu的归档源(但注意:归档源不会提供安全更新,生产环境绝对不要用):
- 备份原有源文件:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak - 编辑源文件,替换为旧版本归档源:
将所有sudo gedit /etc/apt/sources.listhttp://archive.ubuntu.com/ubuntu和http://security.ubuntu.com/ubuntu替换为http://old-releases.ubuntu.com/ubuntu - 更新源并安装php7.0-gd:
sudo apt-get update sudo apt-get install php7.0-gd - 重启Apache生效:
sudo systemctl restart apache2
额外注意事项
- 不要手动在php.ini里添加
extension=php_gd2.dll这类Windows格式的配置,Linux下PHP7.0的GD扩展会在安装后自动生成/etc/php/7.0/apache2/conf.d/20-gd.ini配置文件,自动加载扩展。 - 注意区分CLI版本和Apache版本的PHP:
php -v显示的是命令行版本的PHP,而Apache使用的是mod_php版本,两者的配置文件路径不同,确保你修改的是Apache对应的/etc/php/7.0/apache2/php.ini。
内容的提问来源于stack exchange,提问作者Run
相关产品推荐
相关产品推荐

