最近想使用最新版的laravel开发一个项目,于是去官网查看了一下需要的环境配置,里面提到需要php版本大于7.1.于是去官网看了一下最新的php版本,发现php的测试版本已经是7.4了,于是我果断安装了最新的正式版php7.3。下载,编译,安装还是很顺利的,但是启动laravel项目的时候,提示openssl扩展函数没有安装,原来没有打开PHP的扩展openssl,于是进入到源码安装目录,开始编译openssl,我以为会很简单,但是我的噩梦就是从此刻开始的。

首先,我的openssl版本是1.0.2,这个版本是不能编译(查看openssl版本的命令是openssl version -a),于是我就得先升级openssl。升级openssl的心路历程在此记录一下

  1. 去官网下载新版本openssl,https://www.openssl.org/source/

  2. 解压缩  tar -xzf openssl-1.1.0c.tar.gz

  3. 配置编译 ./config –prefix=/usr/local/openssl

  4. make

  5. make install

  6. 顺利的话openssl会安装完,但是你会发现使用不了

  7. ldd /usr/local/openssl/bin/openssl 发现动态链接库找不到

  8. 将/usr/local/openssl/lib里面的缺少的库连接到lib64下面(ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1)另一个缺少的库也按照此方法配置即可

经历过上面的步骤,你以为你看到了曙光,但是万里长征才刚刚开始,在你进入源码目录的扩展目录ext里面的openssl准备大显身手的时候(执行命令/usr/local/php/bin/phpize),新的问题又会把你拦住。这个时候你会遇到下面的问题, Autoconf version 2.68 or higher is required,现实就是这么残酷,原来是你的autoconf版本过低,你需要升级它。

查看autoconf版本的命令是 rpm -qf /usr/bin/autoconf 。查看以后,你发现果然低于2.68,于是你就需要去官网下载高版本的autoconf然后编译,安装它,这里省略了它的安装步骤。

接下来你回到了源码安装目录,准备重新编译生成带有openssl扩展的php,于是你执行了./configure –with-openssl=/usr/local/ssl,一切都很顺利,你开始变得喜出望外,然而年轻人你高兴的还是太早了,就在你使用make的时候,错误又出来了。undefined reference to `libiconv_open'  undefined reference to `libiconv`,你的耐心几乎被磨没了,你有种想要砸电脑的冲动,但是我告诉你,心态放平,因为你离成功已经很近了。很多失败的人往往都是死在后天的清晨,他们离胜利如此之近,但是他们却放弃了,如果你没有放弃,你就可以看到黎明的曙光。

这个时候你可以使用make ZEND_EXTRA_LIBS='-liconv'这个命令,你会发现错误不见了,你就要成功了.

make成功了,接下来你使用make install也成功了,恭喜你,没有放弃的你迎来了自己的小小成功,虽然很小,但是它确实是一粒种子,若干年后,你会发现,成为大神的你正是从这里一点一滴开始的。ヾ(◍°∇°◍)ノ゙