mac php pecl 安装,macos下使用pecl安装swoole扩展的方法

执行sudo pecl install swoole

可能报错找不到php.h

fatal error: 'php.h' file

not found

#include "php.h"

^

1 error generated.

make: *** [swoole.lo] Error 1

ERROR: `make’ failed

解决办法

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

不要照抄把MacOSX10.13.sdk换成你自己的macos版本

可能报错没有操作权限

Operation not permitted

这个是macos新版本中的引入了Rootless策略,我们会对一些系统的目录没有操作的权限,即使是root用户也不行(一定是个假root)。

暂时关闭的方法是*关机重启后按住command + R别送,进入安全模式。

在安全模式下打开终端,输入下面命令后重新启动即可

csrutil disable

开启的办法也很简单

csrutil enable

关闭后在执行sudo pecl install swoole命令,等待安装完成,这下应该就没有什么问题了。

Build process completed successfully

Installing '/usr/lib/php/extensions/no-debug-non-zts-20160303/swoole.so'

install ok: channel://pecl.php.net/swoole-1.9.22

configuration option "php_ini" is not set to php.ini location

You should add "extension=swoole.so" to php.ini

看到Success应该安装成功了,然后把extension=swoole.so这行代码添加到php.ini文件中即可。

让我们来测试下swoole能不能用

在你的htdocs目录下新建swoole_server.php,输入下边的代码

//创建Server对象,监听 127.0.0.1:9501端口

$serv = new swoole_server("127.0.0.1", 9501);

//监听连接进入事件

$serv->on('connect', function ($serv, $fd) {

echo "Client: Connect.\n";

});

//监听数据接收事件

$serv->on('receive', function ($serv, $fd, $from_id, $data) {

$serv->send($fd, "Server: ".$data);

});

//监听连接关闭事件

$serv->on('close', function ($serv, $fd) {

echo "Client: Close.\n";

});

//启动服务器

$serv->start();

cmd+x保存退出

然后执行脚本

swoole_server.php

执行完毕后应该没有反应,linux里没有反应就是没啥毛病。

然后新打开一个窗口执行telnet 127.0.0.1 9501,然后坑又来了,报错command not found,为啥呢?

因为苹果爸爸在macos 10.13版本中移除了telnet命令,当然你可以通过brew安装回来。但是既然苹果爸爸不建议你用那就不用了呗,我们可以用下面的命令代替。

curl -v telnet://127.0.0.1:9501

在连接成功后,我们输入hello。

mac php pecl 安装,macos下使用pecl安装swoole扩展的方法_第1张图片

ok啦!

如果运行php swoole-server.php后告诉你端口号被占用,我们需要查出占用端口的进程,杀掉即可。

sudo lsof -i :9000 kill -9 端口号

你可能感兴趣的:(mac,php,pecl,安装)