MAC下编译swoole

 发布日期:2019-03-22 06:34:05  阅读次数:阅读数:21  来源:

MAC下编译swoole题解

之前尝试在mac上编译过一次,感觉很乱,没有成功,这次理解更深入了一些后成功编译。

mac 一般自带php,如果有的话可以直接使用pecl install swoole来安装swoole。 如果成功,就不会遇到下面的情况,直接把swoole.so添加到php.ini中就可以了.

是否开启成功可以使用 php -m |grep swoole 查看拓展,pecl下面有一个注意点,要先看。

但事情往往不是那么简单, 来看看可能会遇到哪些问题.

网络问题

安装的时候可能会下载很多包,如果有代理的话最好配置上,速度回快很多。终端下面配置代理使用命令

export ALL_PROXY=socks5://127.0.0.1:1080

PHP多版本

在源码编译swoole的情况下,会出现很多问题,所以我们需要先确定php的状态。

在PHP多版本的情况下,首先swoole4.3的版本暂时不支持php7.3, 所以请保证php是7.2或者以下的版本。

第二个问题,如果mac中存在多个版本的php,首先确定要使用的php版本。具体的配置跟linux下面大同小异,
php -vphp --ini可以确定ini的路径和php的版本。

如果需要更换当前的版本,可以删除/usr/bin,/usr/local/bin下面的php一系列二进制文件,然后使用ln -s 创建新的php软连接到环境变量中。注意,软连接最好使用绝对路径,相对路径需要两者都在相同目录,很容易找不到。

设置好系统环境的php,可以先尝试pecl install swoole来安装拓展。

pecl.net 443 连接错误

mac下面的pecl在更新channel之后会出现ssl无法连接的情况,所以最好不要执行更新命令,Stack Overflow上面的解决方法是下载一个cert证书到指定位置,但我尝试了好像还是不行。

这种情况下,没有办法,我决定还是从源码来编译swoole。

编译安装, openssl问题

在github上下载最新的swoole release包。 解压后使用一下命令。

phpize && \
./configure \
--with-openssl-dir=/usr/local/opt/openssl \
--enable-openssl \
--enable-http2  \
--enable-async-redis \
--enable-mysqlnd && \
make clean && make && sudo make install

上面的命令是经过优化的,在openssl上面是非常容易出问题的。默认的openssl位置在mac上经常找不到,需要手动指定openssl的位置,没有安装的话需要手动安装。

php.h文件找不到

这个需要安装xcode的相关组件。使用下面的命令安装

xcode-select --install

安装完毕之后还要手动将库文件链接到系统目录。

sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/include  /usr/include

上面的命令根据自己的mac版本稍微修改一下即可。

然后继续执行编译安装的命令。

swoole编译指定php版本

我的mac上有php7.3作为默认环境,还有php7.1的,所以swoole在无法为7.3编译的情况下自动选择了php7.1的。 如果有其他情况想指定php版本的,在编译参数中加上–with-php-config= /usr/local/Cellar/php/7.1/bin/php-config 就可以指定php的版本。

在swoole编译结束之后会显示swoole.so的文件目录,文件夹的名字按照时间来命名的,所以可以根据文件夹名称来确定编译的版本。比如20161003大概编译的php版本是7.1, 20181003的大概率是符合7.2左右php版本。

其他问题

因为安装过程可能失败,记得使用make clean清空安装的残余文件。

php的多个文件可能存在版本不一致的问题,比如phpize可能是其他版本的,可以使用绝对路径使用/usr/local/php/bin/phpize来编译。

剩下的就是等待编译成功啦,添加so文件到配置中,就可以尽情的尝试swoole了。

如果您有好的新闻与建议,欢迎点击文章投稿

    发表评论

    电子邮件地址不会被公开。

  • 内容

  • 网名