宝塔面板,swoft部署报Mysql连接错误或找不到redis类解决办法 本文共有3002个字,关键词: 问题:都是centos服务器安装的宝塔面板+php7.2+mysql5.6 通过php扩展安装的swoole4。两台服务器部署的方法相同,部署的时间不同。项目采用的是swoft 1.x版本。出现如下两种错误。 错误一: ``` { "msg": "Mysql execute error,connectError= error=SQLSTATE[HY000] [115] MySQL client is busy now on state#19, please use recv\/fetchAll\/nextResult to get all unread data and wait for response then try again", "file": "\/www\/wwwroot\/test\/vendor\/swoft\/db\/src\/Driver\/Mysql\/MysqlConnection.php", "line": 108, "code": 0 } ``` 错误二: ![微信图片_20191007140323.png](https://blog.ww4k.com/usr/uploads/2019/10/3266555326.png) 从错误上是一般的mysql连接错误。最后经过测试发现和mysql没有任何关系。所有mysql配置正常。最后发现由于部署的时间不同,虽然也是在面板里安装的swoole4但是实际上宝塔下载到的swoole是不同的版本。新的服务器版本是4.4.8旧的版本是4.4.3。 这里通过`php --ri swoole`查看当前php安装的swoole版本。 找到原因就好办了直接卸载原来安装的版本,重新安装新的版本即可。这里提供一个宝塔面板的安装脚本。根据说明使用即可。另外还发现一个问题从宝塔面板后台卸载swoole然后重新安装后依然是原来的版本。最后也是通过脚本中自带的卸载方法卸载之后重新安装,问题解决。 处理脚本: ``` #!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH Swoole_Version='4.4.5' runPath=/root extPath() { case "${version}" in '70') extFile='/www/server/php/70/lib/php/extensions/no-debug-non-zts-20151012/swoole.so' ;; '71') extFile='/www/server/php/71/lib/php/extensions/no-debug-non-zts-20160303/swoole.so' ;; '72') extFile='/www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/swoole.so' ;; '73') extFile='/www/server/php/73/lib/php/extensions/no-debug-non-zts-20180731/swoole.so' ;; esac } Install_Swoole() { public_file=/www/server/panel/install/public.sh : ' if [ ! -f $public_file ];then wget -O $public_file http://download.bt.cn/install/public.sh -T 5; fi . $public_file ' extPath if [ ! -f "${extFile}" ];then wget https://github.com/swoole/swoole-src/archive/v$Swoole_Version.tar.gz tar -zxvf v$Swoole_Version.tar.gz cd swoole-src-$Swoole_Version /www/server/php/$version/bin/phpize ./configure --with-php-config=/www/server/php/$version/bin/php-config --enable-openssl --with-openssl-dir=/usr/local/openssl --enable-sockets make && make install cd ../ rm -rf swoole* rm -f v$Swoole_Version* fi if [ ! -f "${extFile}" ];then echo 'error'; exit 0; fi echo -e "\n[swoole]\nextension = swoole.so\n" >> /www/server/php/$version/etc/php.ini service php-fpm-$version reload } Uninstall_Swoole() { extPath sed -i '/swoole/d' /www/server/php/$version/etc/php.ini rm -f ${extFile} service php-fpm-$version reload echo '===============================================' echo 'successful!' } actionType=$1 version=$2 vphp=${version:0:1}.${version:1:1} if [ "$actionType" == 'install' ];then Install_Swoole elif [ "$actionType" == 'uninstall' ];then Uninstall_Swoole fi ``` 使用方法 根据是使用的PHP版本修改72 以上shell脚本保存到 /www/server/panel/install目录下 cd /www/server/panel/install chmod +x swoole4.sh bash swoole4.sh install 72 如果你已安装了swoole 建议是卸载原版本 bash swoole.sh uninstall 72 × yihong (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 PHP 2019-10-07 评论 5711 次浏览