在学习swoole的时候,首先需要在mac上安装,先来说一下我的mac版本:
好的,正文开始了。
首先我是想偷个懒的,根据文档,可以使用pecl进行安装。
问题一:没有安装pecl
Package “swoole” Version “1.8.12” does not have REST dependency information available install failed
解决方法:
下载pecl:
curl -O http://pear.php.net/go-pear.phar
sudo php -d detect_unicode=0 go-pear.phar
执行以上命令后会进行安装过程,会有一些配置选项:
输入1,回车,配置pear路径为:/usr/local/pear
输入4,回车,配置命令路径为:/usr/local/bin
回车两次,其他让其默认,安装完成。可以通过‘pecl version’进行检测是否安装成功。
好的,再次执行:
pecl install swoole
结果提示:Cannot install, php_dir for channel "pecl.php.net" is not writeable by the current user
,这是没有权限执行,好的,前面带上sudo 就行了。
结果出现了问题三:autoconf不存在
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
ERROR: `phpize’ failed
直接通过brew进行安装:
brew install autoconf
安装完成后再次执行install,结果试了好几次,都是:
ERROR: unable to unpack /tmp/pear/download/swoole-4.4.0.tgz
我真是fuck了,于是我从官网上(https://github.com/swoole/swoole-src/releases)拉下来一个,放在了tmp/pear/install/下,然后再次执行安装命令,但是还是不行。
于是我又尝试了通过brew进行安装:
brew install php71-swoole
但是生活还是对我这只小猫咪下了刀。
到此,彻底放弃偷懒了,决定编译安装。
上面的没用,还得看下面的!
下载tar.gz源代码进行解压,然后我放在了/etc/swoole下,准备编译。
cd swoole
sudo phpize
./configure
make
make install
make test
在执行到第三步时给我报了:configure: error: Cannot find php-config
,这是因为这个参数的配置路径是错误的。在执行./configure时需要带上正确的php-config文件位置信息。
如果不知道php-config的位置,可以进行搜索:
find / -name php-config
于是修改为:
./configure --with-php-config=/usr/bin/php-config
结果又给我来了一个:
fatal error: 'php.h' file
not found
#include "php.h"
^
1 error generated.
make: *** [swoole.lo] Error 1
ERROR: `make’ failed
网上都说需要下载Xcode,可以直接App Store中下载,下载完成之后执行:
sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include /usr/include
ps: 不要照抄把MacOSX10.13.sdk换成你自己的macos版本
在执行上面这句命令时可能会遇到:
Operation not permitted
这个错。反正我是遇到了,这是因为在macos新版本中引入了Rootless策略,会对一些系统的目录没有操作的权限,即使是root用户也不行。
暂时关闭的方法是*关机重启后按住command + R别送,进入安全模式。
在安全模式下打开终端,输入下面命令后重新启动即可:
csrutil disable
开启的办法也很简单
csrutil enable
关闭后再执行之前的命令就不会有了。
编译安装成功后在/etc/php.ini中添加:
extension=swoole.so