mac下为php7.4.5安装swoole4.5.0扩展时所遇到的问题及解决方案

之前已成功在本机把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的编译安装参数,如下图:

mac下为php7.4.5安装swoole4.5.0扩展时所遇到的问题及解决方案_第1张图片

发现了可能的问题所在,即编译时-with-openssl-dir参数与PHP引用的openssl所用的版本不一致所致,在之前安装php7.4.5时我并没有用之前为PHP7.3.15用的/usr/local/Cellar/openssl/1.0.2q/,而是改为用/usr/local/opt/[email protected]/了。

初步怀疑是此问题,就尝试把编译参数改为如下:

./configure --enable-openssl --enable-http2 --enable-mysqlnd --enable-sockets -with-openssl-dir=/usr/local/opt/[email protected]/ --with-php-config=/Users/mac/service/php745/bin/php-config

再sudo make 及sudo make install

之后swoole扩展安装成功,如下图:

mac下为php7.4.5安装swoole4.5.0扩展时所遇到的问题及解决方案_第2张图片

你可能感兴趣的:(php)