Ubuntu安装PHP扩展,gd、curl
在 Ubuntu 服务器上为 PHP 安装 gd、curl 和 redis 扩展,最直接的方法是使用 apt 包管理器安装对应扩展包,然后重启 PHP 服务。
本文从检查环境开始,逐步演示安装、配置和验证过程,确保你能让扩展真正生效。
先确认 PHP 版本和运行方式
Ubuntu 中 PHP 可能以 Apache 模块、PHP-FPM 或 CLI 方式运行。
安装扩展前,先确认当前使用的 PHP 版本,因为扩展包名通常包含版本号。
在终端执行:
php -v
输出会显示类似 PHP 8.1.2-1ubuntu2.14 的信息。
记下主版本号(如 8.1),后面安装扩展时需要用到。
如果服务器使用 PHP-FPM,还需要确认 FPM 服务名称:
systemctl status php8.1-fpm
将 8.1 替换为你实际的版本号。
若提示服务不存在,尝试 php7.4-fpm 或 php8.2-fpm。
安装 gd 和 curl 扩展
gd 扩展用于图像处理,curl 扩展用于发送 HTTP 请求。
这两个扩展在 Ubuntu 官方源中都有预编译包,直接安装即可。
更新软件包列表
sudo apt update
安装扩展包
sudo apt install php8.1-gd php8.1-curl
注意将 8.1 替换为你的 PHP 版本。
如果 PHP 是 7.4,则命令为:
sudo apt install php7.4-gd php7.4-curl
安装完成后,扩展的配置文件通常会自动放置在 /etc/php/8.1/mods-available/ 目录,并已通过软链接启用。
可以用以下命令确认:
ls /etc/php/8.1/mods-available/ | grep -E 'gd|curl'
安装 redis 扩展
redis 扩展不是 PHP 官方默认包含的,但 Ubuntu 源中提供了 php-redis 包。
推荐优先使用 apt 安装,简单且不易出错。
sudo apt install php8.1-redis
如果源中没有对应版本,或者你需要特定版本的 redis 扩展,可以使用 PECL 编译安装。
先安装编译工具和依赖:
sudo apt install php8.1-dev php-pear
然后执行:
sudo pecl install redis
安装过程中会询问一些配置选项,直接按回车使用默认值即可。
完成后,需要手动在 php.ini 中添加 extension=redis.so。
让扩展在 PHP 中生效
apt 安装的扩展通常会自动启用,但有时需要手动检查或重启服务。
检查扩展是否已启用
php -m | grep -E 'gd|curl|redis'
如果输出中包含 gd、curl 和 redis,说明扩展已加载。
如果没有输出,需要手动启用。
手动启用扩展
对于 apt 安装的扩展,可以创建软链接:
sudo phpenmod gd
sudo phpenmod curl
sudo phpenmod redis
如果 phpenmod 命令不存在,可以直接编辑 php.ini 文件。
找到对应 SAPI 的配置文件,例如 PHP-FPM 的:
sudo nano /etc/php/8.1/fpm/php.ini
在文件末尾添加:
extension=gd.so
extension=curl.so
extension=redis.so
保存后退出。
注意不同 SAPI(如 cli、fpm、apache2)有独立的 php.ini,如果 Web 和命令行都需要使用扩展,需要分别配置。
重启 PHP 服务
修改配置后必须重启服务:
sudo systemctl restart php8.1-fpm
如果使用 Apache 模块方式,则重启 Apache:
sudo systemctl restart apache2
验证扩展是否正常工作
重启后,再次检查:
php -m | grep -E 'gd|curl|redis'
如果通过 Web 运行 PHP,可以创建一个 info.php 文件放到网站根目录:
在浏览器访问该文件,搜索 gd、curl、redis,确认它们已出现在页面中。
检查完毕后请删除该文件,避免信息泄露。
对于 redis 扩展,还可以写一段简单代码测试连接:
connect('127.0.0.1', 6379);
echo 'Redis connection: OK';
} catch (Exception $e) {
echo 'Redis connection failed: ' . $e->getMessage();
}
将以上代码保存为 test-redis.php 并在浏览器访问,如果输出 Redis connection: OK,说明扩展和 Redis 服务连接均正常。
常见报错与避坑提示
- 扩展安装后不生效:最常见的原因是 PHP 服务未重启,或者修改了错误的
php.ini。确认当前 SAPI 使用的配置文件路径,可以通过php --ini查看 CLI 的配置,通过phpinfo()查看 Web 的配置。 - 提示
Unable to locate package php8.1-redis:说明当前系统源中没有对应版本的包,可以先执行sudo apt update,如果依然没有,改用 PECL 编译安装。 - PECL 安装时提示缺少
phpize:需要安装php-dev包,命令为sudo apt install php8.1-dev。 - redis 连接失败但扩展已加载:检查 Redis 服务是否运行,以及防火墙是否放行 6379 端口。如果 Redis 设置了密码,连接时需要调用
$redis->auth('密码')。 - gd 扩展缺少 JPEG 支持:apt 安装的 gd 通常已包含常用格式支持,如果确实缺少,可安装
libjpeg-dev后重新编译,但大多数场景下预编译包已够用。
完成上述步骤后,你的 Ubuntu 服务器上的 PHP 应该已经具备 gd、curl 和 redis 扩展。
建议每次修改配置后都通过 php -m 和 phpinfo() 双重确认,避免因 SAPI 差异导致扩展只在命令行生效而 Web 环境不可用。