Linux升级Swoole的坎坷之路
因业务方面需要升级swoole,从2.2升级到4.5
1.wget https://github.com/swoole/swoole-src/archive/v4.5.2.tar.gz
2.tar -zxvf v4.5.2.tar.gz
3.cd swoole-src-4.5.2
4.在当前目录执行phpize,由于我用的是宝塔,所以我的执行命令是:/www/server/php/72/bin/phpize;
5../configure --with-php-config=/www/server/php/72/bin/php-config;
6.以上步骤成功后,依次再执行make clean(如果是升级swoole版本则先执行make clean)
7.make && make install(如果报gcc相关错误,请走7....步骤)
注意:安装gcc会很慢的可能得用1个小时以上
7.1执行完后可能会报gcc相关错误,原因是gcc版本过低,我的版本是4.4,直接将4.4版本升到4.8
7.2wget http: //ftp.gnu.org/gnu/gcc/gcc-4.8.0/gcc-4.8.0.tar.bz2
7.3tar -jxvf gcc-4.8.0.tar.bz2
7.4cd gcc-4.8.0 ./contrib/download_prerequisites
7.5cd ..
7.6mkdir gcc-build-4.8.0
7.7cd gcc-build-4.8.0 ../gcc-4.8.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
7.8# j 后面的是核心数,编译速度会比较快 make -j4
7.9sudo make install
7.10ls /usr/local/bin | grep gcc
7.11update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/i686-pc-linux-gnu-gcc 40
7.12gcc -v
8.运行make test(如果出现disable_functions相关错误请走8....)
8.1打开php.ini文件 8.2disable_functions=passthru,exec,chroot,chgrp,chown,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru(看下有没有被禁用的函数,有的话直接删除就行)
9.在php.ini中添加:extension=swoole.so(建议写成绝对路径)
10.重启php-fpm,问题来了(如果出现GLIBCXX相关错误请走9....)
10.1错误信息:/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found 字面意思找不到GLIBCXX_3.4.18
这是因为升级gcc
时,生成的动态库没有替换老版本gcc
的动态库导致的,将gcc
最新版本的动态库替换系统中老版本的动态库即可解决。
10.2strings /usr/lib64/libstdc++.so.6 | grep GLIBC 看了一下确实没有3.4.18版本
10.3cp /home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21 /usr/lib64
10.4cd /usr/lib64
10.5rm -rf libstdc++.so.6
10.6ln -s libstdc++.so.6.0.21 libstdc++.so.6
10.7在运行了一次strings /usr/lib64/libstdc++.so.6 | grep GLIBC一看有了
11.重启php-fpm
12.php -m查看安装的扩展
13.php --ri swoole查看swoole版本
14.升级成功!可谓程序员路途坎坷,原本以为十几分钟的事情搞了几个小时。其实这次安装最根本的原因是我的系统是Centos6,所以各种依赖也是老版本。如果是centos7+的话根本安装swoole4会很顺利的!