Workerman是一款开源高性能异步PHP socket框架，在学习的过程中首先得PHP 环境的支持，在 macOS 下的 MAMP Pro 默认的 PHP 环境中并没有安装 pcntl 模块，需要安装该模块才能启动 Workerman。

### 一、什么是Workerman

Workerman是一款开源高性能异步PHP socket框架。支持高并发，超高稳定性，被广泛的用于手机app、移动通讯，微信小程序，手游服务端、网络游戏、PHP聊天室、硬件通讯、智能家居、车联网、物联网等领域的开发。 支持TCP长连接，支持Websocket、HTTP等协议，支持自定义协议。拥有异步Mysql、异步Redis、异步Http、MQTT物联网客户端、异步消息队列等众多高性能组件。

### 二、切换 PHP 版本为 MAMP 指定的

macOS 系统自带PHP环境，后为开发方便，安装了 MAMP Pro 软件，在终端运行`php -v`，可查看到 macOS 自带的 PHP 版本，切换 PHP 版本为 MAMP 指定的版本步骤如下：

**1、终端输入代码来编辑 .bash\_profile 文件，该文件可以不存在，就创建新文件**

```
sudo vim ~/.bash_profile
```

**2、把环境变量代码添加到 .bash\_profile 文件里**

```
export PATH="/Applications/MAMP/bin/php/php7.4.2/bin:$PATH"
```

注：注意 PHP 版本的路径和版本号

**3、执行文件，使起生效**

```
source .bash_profile
```

**4、检查是否生效（检验一）**

```
php -v
```

**5、环境变量指向地址（检验二）**

```
which PHP
```

### 三、安装 pcntl 模块

**1、使用`php -v`命令查看当前的PHP CLI的版本**

```
~# php -v
```

**2、根据版本下载PHP源代码**

PHP历史版本下载页面：<http://php.net/releases/>，比如 PHP 版本为 7.4.2，则下载 php7.4.2.tar.gz。

**3、解压源码压缩包**

可使用命令：

```
~# tar -zxvf php7.4.2.tar.gz
```

也可以直接在目录下解压，替换

**4、进入源码中的ext/pcntl目录**

```
~# cd /Applications/MAMP/bin/php/php7.4.2/ext/pcntl
```

**5、运行 phpize 命令**

```
~# phpize
// 显示内容：
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
```

**6、运行 configure命令**

```
~# ./configure
// 显示内容：
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
...
```

如果下一步出现错误：

```
'php.h' file not found
```

需执行：

```
~# ./configure --with-php-config=/Applications/MAMP/bin/php/php7.4.2/bin/php-config --prefix=/Applications/MAMP/bin/php/php7.4.2/bin/php
```

**7、运行 make 命令**

```
~# make
// 显示内容：
/bin/bash /tmp/ph7.4.2/ext/pcntl/libtool --mode=compile cc ...
-I/usr/include/php7 -I/usr/include/php7/main -I/usr/include/php5/TSRM -I/usr/include/php7/Zend...
...
```

**8、运 行make install 命令**

```
~# make install
// 显示内容：
Installing shared extensions: /usr/lib/php7/20090626/
```

**9、配置`php.ini`文件**

通过运行 php –ini查找php.ini文件位置：`/Applications/MAMP/bin/php/php7.4.2/conf/php.ini`，不是 MAMP 面板上打开的 php.ini，然后在文件中添加`extension=pcntl.so`

```
extension=pcntl.so
```

说明： 此方法一般用来安装PHP自带的扩展，例如posix扩展和pcntl扩展。除了用phpize编译某个扩展，也可以重新编译整个PHP，在编译时用参数添加扩展，例如在源码根目录运行

```
~# ./configure --enable-pcntl --enable-posix ...
~# make && make install
```

### 四、启动 Workerman

环境准备好，进入 Workerman 根目录，在终端执行：

```
php start.php start
```

就可以启动 Workerman