之前已成功在本机把PHP版本从7.3.15升级到了php7.4.5,具体编译参数可见之前的一篇文章。
一如即往的从我有道云笔记中找到原先为其它PHP7.3.15版本安装swoole的记录,直接把原先的参数复制过来了
# sudo /Users/mac/service/php745/bin/phpize
# sudo ./configure --enable-openssl --enable-http2 --enable-mysqlnd --enable-sockets -with-openssl-dir=/usr/local/Cellar/openssl/1.0.2q/ --with-php-config=/Users/mac/service/php745/bin/php-config
之后也顺利的sudo make 及sudo make install安装成功,并在扩展目录下成功的生成了swoole.so文件。
但是在重启PHP服务后发现swoole扩展并没有安装上!
查看PHP启动时报错信息为:
$ sudo /Users/mac/service/php745/sbin/php-fpm
[01-May-2020 15:02:21] NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library 'swoole.so' (tried: /Users/mac/service/php745/lib/php/extensions/no-debug-zts-20190902/swoole.so (dlopen(/Users/mac/service/php745/lib/php/extensions/no-debug-zts-20190902/swoole.so, 9): Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
Referenced from: /Users/mac/service/php745/lib/php/extensions/no-debug-zts-20190902/swoole.so
Reason: image not found), /Users/mac/service/php745/lib/php/extensions/no-debug-zts-20190902/swoole.so.so (dlopen(/Users/mac/service/php745/lib/php/extensions/no-debug-zts-20190902/swoole.so.so, 9): image not found)) in Unknown on line 0
简单网上搜了一下,网上有针对此问题的相关说明,有的说是要先加载sockets.so扩展,有的说要先加载pdo_mysql.so扩展,但这两个扩展我在之前编译安装PHP时已经加上了,并且生效了,所以不是这两个扩展的问题:
相同的编译安装参数,在之前为其它PHP版本安装swoole扩展时并无问题,难道php7.4.5不兼容swoole4.5.0?非也!
在仔细又看了下之前PHP7.4.5的编译安装参数,如下图:
发现了可能的问题所在,即编译时-with-openssl-dir参数与PHP引用的openssl所用的版本不一致所致,在之前安装php7.4.5时我并没有用之前为PHP7.3.15用的/usr/local/Cellar/openssl/1.0.2q/,而是改为用/usr/local/opt/openssl@1.1/了。
初步怀疑是此问题,就尝试把编译参数改为如下:
./configure --enable-openssl --enable-http2 --enable-mysqlnd --enable-sockets -with-openssl-dir=/usr/local/opt/openssl@1.1/ --with-php-config=/Users/mac/service/php745/bin/php-config
再sudo make 及sudo make install
之后swoole扩展安装成功,如下图: