昨天在php-7.2.32环境下,编译安装swoole-4.5.3版本的扩展,尝试重新编译php和swoole好几次,都是报undefined symbol: sapi_globals的错误,整体错误信息如下:
Starting php-fpm [08-Sep-2020 22:12:16] NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library 'swoole.so' (tried: /opt/software/somodules/swoole.so (/opt/software/somodules/swoole.so: undefined symbol: sapi_globals), /opt/software/somodules/swoole.so.so (/opt/software/somodules/swoole.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
没辙只好尝试升级php版本,升到7.4.8,再重新编译swoole,没想到还真成功了。
为了偷懒,把之前编译好的redis.so文件也直接拷贝到新扩展目录里,结果重启php-fpm就报如下错误:
PHP Warning:PHP Startup: redis: Unable to initialize module
本文为翟码农个人博客里php分类下的有关php升级问题的原创文章,转载请注明出处:http://www.zhai14.com/blog/php-startup-unable-to-initialize-module-of-redis.html
错误原因就是php版本已升级,旧版本redis.so已变得不可用。所以需要重新编译一下phpredis扩展。
编译很简单,就下面3行命令:
phpize ./configure --with-php-config=/usr/local/php/bin/php-config make && make install
注意phpize,php-config路径要是新版本php路径下的。
最后用php -m | grep xxx命令查看,redis和swoole扩展总算都装成功了。