引言

我在安装composer的时候,出现了一个报错。

下载Composer失败,提示缺少扩展

The openssl extension is missing, which means that secure HTTPS transfers are impossible.
If possible you should enable it or recompile php with --with-openssl

提示我需要安装openssl扩展,但官方给的建议是重新编译。

已经安装完的php脚本,重新编译太麻烦了,花的时间也太久了。

好在我们的源码包还没有删掉,可以直接安装扩展。

传送门

# 进入指定扩展目录
cd /server/data/packages/php-8.3.0/ext/openssl/

# 如果config.m4文件不存在,复制config0.m4文件名
cp config0.m4 config.m4

# 创建预编译文件
/server/php/8.3.0/bin/phpize

# 开始预编译
./configure --with-php-config=/server/php/8.3.0/bin/php-config

# 编译及安装
make
make install

# 修改配置文件(开启扩展)
vim /server/php/8.3.0/etc/php.ini

一、找到源码包下扩展的目录

首先确定好,你的源码包目录仍然存在,这一点很重要。

如果不存在,请下载与你当前php脚本一致的源码包。

在你的源码包内,找到ext/目录,这个就是你所有php基础扩展的目录了。

请输入图片描述

二、进行扩展包的编译

然后,需要先进入此目录

比如:我现在缺少的是OpenSSL扩展,那就需要进入源码包/ext/openssl

如果你缺少的是其他的扩展,就需要进入其他的目录,结构类似。

进入指定扩展包的目录

1. 尝试创建预编译脚本

从上图看到,这个包下面,是没有configure文件的。

这个就没有办法直接上来就进行预编译,只能先通过php提供的phpize的脚本,来创建出一个预编译的脚本文件。

我们尝试用phpize命令进行创建

2. 出现找不到文件的问题

报错,找不到config.m4文件

我们注意到,报错说的是找不到config.m4

但当前目录下确实存在一个.m4文件,那么我们复制一下这个文件

cp config0.m4 config.m4

这样我们就有了这个config.m4文件了,再次执行phpize命令

创建预编译脚本成功

可以看到已经成功创建,输出了当前版本号和扩展编号信息。

那么这个目录下是否已经出现了./configure文件呢?

出现configure文件

可以看到已经有了,这时候我们就可以按照之前的步骤进行预编译了。

3. 开始预编译

开始预编译了,使用命令:

./configure --with-php-config=/server/php/8.3.0/bin/php-config

这里需要将当前php-config文件的路径传进去,需要让这个扩展知道需要安装给哪个PHP来使用。

等待一会,显示成功。

预编译结束

4. 开始编译及安装

依次输入下面的几条命令即可进行编译和安装,注意,测试步骤可以省略 ,本人亲测,测试过程出错了也不影响目前使用。

# 编译
make

# 测试
make test

# 安装
make install

编译成功

安装成功

此时安装成功后,有一条提示,这个路径就是这个扩展实际安装的位置,可以看到,这个位置是处于我们php的安装目录lib/下的。

5. 仍没有显示扩展

这时候我们测试一下是否已经有OpenSSL扩展了,使用命令:

php -m

发现当前仍然没有OpenSSL扩展,这是怎么回事呢?

扩展列表里没有OpenSSL

6. 在配置文件当中开启扩展

这种情况属于扩展已经安装好了,但php的配置当中并没有开启这个扩展,造成这个扩展属于未激活的状态。

我们找到php的配置文件,如果不清楚怎么找的,可以使用php --ini命令查看当前php脚本的配置文件在哪个路径。

vim /server/php/8.3.0/etc/php.ini

打开这个文件之后,使用斜杠,输入openssl,查找到这一行,将前面的分号给去掉,然后保存退出。

解除扩展的注释

然后我们再次输入检查扩展列表的命令。

已经加载openssl扩展

发现已经加载了OpenSSL扩展了,至此,安装完成。

如果你的项目是运行在php-fpm下进行解析的,记得再重启一下php-fpm哦,不是重启Apache或者Nginx

瑞思拜~

下班

欢迎关注拓行公众号,分享各种技术博客文章

拓行——奋勇进取,开拓未来,砥砺前行

最后修改:2023 年 12 月 18 日
如果您对各种技术博客文章感兴趣,欢迎关注拓行公众号,分享各种专业技术知识~