mac 安装 swoole 可能会出现的错误

博客主要讲述了在Mac上安装Swoole的过程。首先尝试用pecl安装未成功,并列出可能出现的报错及解决方法;之后换了下载、编译安装的方式,虽遇到报错但最终完美解决,还提及重新编译和添加swoole.so等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

请先看完之后再操作

一、用pecl安装swoole(没有安装起来)

2018年4月,由于homebrew的变动,导致无法使用brew install的方式安装php的扩展,现在改为用pecl安装,pecl安装swoole的方法为:

pecl install swoole

出现在选项要填yes还是no,这篇文章有写:https://www.jianshu.com/p/14f542b7e5d0#comment-27164461
可能出现的报错及解决方法
  • 1 fatal error: ‘openssl/ssl.h‘ file not found
解决方法1:cp -R /usr/local/opt/openssl/include/openssl /usr/local/include

解决方法2:ln -s /usr/local/opt/openssl/include/openssl /usr/local/include/openssl

原因:一般用brew安装的软件,都会把需要include的文件自动放到/usr/local/include里的,但是不知为什么安装openssl的时候没有放到那里,所以要自己拷过去,其实最好的方法是做一个链接,即用解决方法2!
  • 2 error: Cannot find libpq-fe.h. Please confirm the libpq or specify correct PostgreSQL(libpq) installation path
解决方法 brew reinstall PostgreSQL

原因:可能是没有安装PostgreSQL
  • 3 fatal error: ‘hiredis/hiredis.h‘ file not found
出现这个原因绝大多数是因为没有安装hiredis,用brew search hiredis看看有没安装,没有安装直接用brew install hiredis安装后,再次pecl install swoole就可以

细心的童鞋会发现,brew install hiredis后,/usr/local/include里,多了一个hiredis,而且这个是一个软链,链接到/usr/local/Cellar/hiredis/0.13.3/include/hiredis
  • 结果还是报错,没有搞定,能力有限.

二、换了个方式 安装swoole(完美解决)

  • 2.1 下载swoole
sudo pecl download swoole
  • 2.2 编译安装
ar zxvf swoole-4.2.12.tgz    // 注意自己下载的版本,可能不一定
cd swoole-4.2.12
phpize
./configure --enable-openssl --enable-http2 --enable-sockets --enable-mysqlnd -with-openssl-dir=/usr/local/Cellar/openssl/1.0.2s/
make clean && make && sudo make install
  • 2.3 遇到报错
mkdir: /usr/local/Cellar/php@7.1/7.1.30/pecl: File exists
mkdir: /usr/local/Cellar/php@7.1/7.1.30/pecl: No such file or directory
make: *** [install-modules] Error 1

// 大致意思就是 pecl  文件夹存在,但是打不开
// 我的pecl是软连接过来的 不知道为什么打不开
  • 2.4 解决方法
修改 /usr/local/Cellar/php@7.1/7.1.30/bin/php-config 

extension_dir=‘/usr/local/Cellar/php@7.1/7.1.30/pecl/20160303‘ 中的 『pecl』 换成 『lib/php』
extension_dir=‘/usr/local/Cellar/php@7.1/7.1.30/lib/php/20160303‘
  • 2.5 重新编译
./configure --enable-openssl --enable-http2 --enable-sockets --enable-mysqlnd -with-openssl-dir=/usr/local/Cellar/openssl/1.0.2s/
make clean && make && sudo make install
  • 2.6 添加 swoole.so
修改php.ini 在文件末尾 加一行
extension = "/usr/local/Cellar/php@7.1/7.1.30/lib/php/20160303/swoole.so"
  • mac安装swoole 真是疼

转载于:https://www.cnblogs.com/xiaobaiskill/p/11062024.html

### 关于 PHP 8.1.28 和 Swoole安装、配置、使用方法以及兼容性 #### 安装过程概述 对于 Mac M2 设备而言,在安装 PHP 8.1 版本之前,需先确认当前系统的 Homebrew 或者其他包管理工具已更新至最新状态。通过命令 `brew update` 可以完成这一操作[^1]。 为了确保顺利安装 PHP 8.1 并集成 Swoole 扩展,建议按照如下方式调整 `.zshrc` 文件中的路径设置: ```bash export PATH="/opt/homebrew/opt/php@8.1/bin:$PATH" export PATH="/opt/homebrew/opt/php@8.1/sbin:$PATH" ``` 上述代码片段用于指定 PHP 解释器的具体位置,并将其加入到系统的环境变量中以便全局调用。 #### 配置 PECL 来源并安装 Swoole 由于官方默认的 PECL 源可能不是最新的或者是国内网络访问不稳定的原因,推荐修改 PECL 的镜像地址为中国科学技术大学提供的稳定镜像站点: ```bash sudo pecl config-set preferred_state beta sudo pear channel-update pear.php.net sudo pecl channel-update pecl.php.net sudo pecl config-set php_ini /usr/local/etc/php/8.1/php.ini ``` 接着可以利用 PECL 工具来简化 Swoole安装流程: ```bash sudo pecl install swoole ``` 这一步骤会自动处理依赖关系并将编译好的模块放置在适当的位置。 #### 修改 php.ini 开启 Swoole 支持 编辑 `/usr/local/etc/php/8.1/conf.d/ext-swoole.ini` 文件(如果不存在则创建),添加以下内容以激活 Swoole 插件支持: ```ini extension=swoole.so [swoole] swoole.enable_preemptive_scheduler=1 ; (Optional) Enable preemptive multitasking scheduler. ``` 保存更改后重启 Web 服务器服务使得新的配置生效[^3]。 #### 处理常见错误 当遇到类似于 "fatal error: 'pcre2.h' file not found" 这样的编译时错误提示时,通常是因为缺少必要的 PCRE 库文件所致。可以通过 Homebrew 安装 pcre2 软件包解决这个问题: ```bash brew install pcre2 ``` 之后重新尝试构建 Swoole 即可正常工作。 #### 使用示例 下面给出一段简单的 PHP 代码作为例子展示如何运用 Swoole 创建 HTTP Server 实现异步请求响应机制: ```php <?php $server = new Swoole\Http\Server("0.0.0.0", 9501); $server->on('request', function ($request, $response) { echo "Request received\n"; // Simulate an asynchronous task using co::sleep() go(function () use ($response){ co::sleep(1); $response->end("<h1>Hello World</h1>"); }); }); $server->start(); ?> ``` 这段脚本展示了基于协程实现非阻塞 I/O 操作的能力,这是 Swoole 提供的核心特性之一[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值