Homestead 使用 pecl 安装 swoole 扩展
``
环境说明及版本说明:
Homestead v13.2.1
swoole v4.8.11
``
1. 安装 swoole
由于homestead里面有很多版本的PHP,
- 安装 swoole
如果执行 pecl install swoole 安装 ,会安装最新版本,就是php8.*的版本, vagrant@homestead:~$ sudo pecl install swoole
这个时候就要指定PHP版本和swoole版本: sudo pecl -d php_suffix=7.4 install swoole-4.8.8 或者 sudo pecl -d php_suffix=7.4 install https://pecl.php.net/get/swoole-4.8.11.tgz
遇到以下错误
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update Could not download from "https://pecl.php.net/get/mongodb-1.5.5.tgz", cannot download "pecl/mongodb" (Connection to `ssl://pecl.php.net:443' failed: ) Error: cannot download "pecl/mongodb" Download failed install failed
- 解决方法:
vagrant@homestead:~$ sudo pecl channel-update pecl.php.net
安装的时候会有 yes/no 之类的选项,直接
enter
就可以了
出现如下文字说明已经安装成功:Build process completed successfully Installing '/usr/lib/php/20180731/swoole.so' Installing '/usr/include/php/20180731/ext/swoole/config.h' install ok: channel://pecl.php.net/swoole-4.4.17 configuration option "php_ini" is not set to php.ini location You should add "extension=swoole.so" to php.ini
如果安装的时候一直回车,安装到最后报错了
我这里提示是,c-ares 有问题,导致安装失败
安装一下 c-cres 就好了
sudo apt update
sudo apt install libc-ares-dev
这个安装好后,在重新安装上面的,
下面是对swoole的一些配置
创建配置文件
vagrant@homestead:~$ sudo touch /etc/php/7.3/mods-available/swoole.ini
- 写入以下内容
extension=swoole.so
- 添加软连接
vagrant@homestead:/etc/php/7.3/cli/conf.d$ sudo ln -s /etc/php/7.3/mods-available/swoole.ini ./20-swoole.ini
- 重启
php-fpm
sudo service php7.3-fpm restart
- 查看扩展
vagrant@homestead:/etc/php/7.3/cli/conf.d$ php --ri swoole
如果出现以下内容说明已经安装成功
swoole Swoole => enabled Author => Swoole Team <team@swoole.com> Version => 4.4.17 Built => Apr 17 2020 20:14:41 coroutine => enabled epoll => enabled eventfd => enabled signalfd => enabled cpu_affinity => enabled spinlock => enabled rwlock => enabled pcre => enabled zlib => 1.2.11 mutex_timedlock => enabled pthread_barrier => enabled futex => enabled async_redis => enabled Directive => Local Value => Master Value swoole.enable_coroutine => On => On swoole.enable_library => On => On swoole.enable_preemptive_scheduler => Off => Off swoole.display_errors => On => On swoole.use_shortname => On => On swoole.unixsock_buffer_size => 8388608 => 8388608
如果上面的安装不行, 那换一个方式
git clone https://gitee.com/swoole/swoole.git
cd swoole
phpize && ./configure --with-php-config=/usr/bin/php-config8.0 && make && sudo make install
安装完后, 请按最上面 `创建配置文件` 那一步创建软链
在对应php版本的php.ini文件 添加 extension=swoole.so
我的是在 /etc/php/8.0/cli/目录 因为项目需要8.0的php版本
创建对应PHP版本 `软链`
vagrant@homestead:/etc/php/8.0/cli/conf.d$ sudo ln -s /etc/php/8.0/mods-available/swoole.ini ./20-swoole.ini
本文有一部分是复制了另一篇文章:
博客:Homestead 使用 pecl 安装 swoole 扩展
这篇文章只是对一路回车报错的一点点补充
本作品采用《CC 协议》,转载必须注明作者和本文链接
为什么需要重启php-fpm?