MAMP 为PHP安装扩展模块

标签: 编程学习 PHP学习

本地运行一个 Workerman 例子的时候发现我的 MAMP 没有 pcntl 模块,果断折腾一下。

MAMP && Workerman

MAMP 是一个 PHP 集成开发环境,目前支持 mac 和 Windows,由于在 mac 下使用比较方便,最近几年都玩的这个~

Workerman 是一款开源高性能异步 PHP socket 框架,支持高并发,超高稳定性,支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。拥有异步Mysql、异步Redis、异步Http、MQTT物联网客户端、异步消息队列等众多高性能组件。

添加环境变量

终端输入代码来编辑 .bash_profile 文件

sudo vim ~/.bash_profile

把环境变量代码添加到 .bash_profile 文件里

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

执行文件,使起生效

source .bash_profile

检查是否生效

php -v
which PHP

查看环境是否支持

可以在官方文档查看需要的环境配置

http://doc3.workerman.net/315115

也可以使用下面的命令查看当前环境是否支持 Workerman

curl -Ss http://www.workerman.net/check.php | php
PHP Version >= 5.3.3                  [OK]
Extension pcntl check                 [fail]
Extension posix check                 [OK]

安装 pcntl 模块

下载PHP源代码,PHP历史版本下载页面:http://php.net/releases/ ,比如 PHP 版本为 7.1.12,则下载 php-7.1.12.tar.gz。

解压源码压缩包

tar -zxvf php-7.1.12.tar.gz

进入源码中的ext/pcntl目录

cd ~/Desktop/php-7.1.12/ext/pcntl

运行 phpize

Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303

运行 configure

checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for a sed that does not truncate output... /usr/bin/sed
...

如果出现 'php.h' file not found 错误,请执行下面命令

./configure --with-php-config=/Applications/MAMP/bin/php/php7.1.12/bin/php-config --prefix=/Applications/MAMP/bin/php/php7.1.12/bin/php

运行 make

/bin/sh /Users/dcoin/Desktop/php-7.1.12/ext/pcntl/libtool --mode=compile cc -DHAVE_STRUCT_SIGINFO_T -I. -I/Users/dcoin/Desktop/php-7.1.12/ext/pcntl -DPHP_ATOM_INC -I/Users/dcoin/Desktop/php-7.1.12/ext/pcntl/include -I/Users/dcoin/Desktop/php-7.1.12/ext/pcntl/main -I/Users/dcoin/Desktop/php-7.1.12/ext/pcntl -I/Applications/MAMP/bin/php/php7.1.12/include/php -I/Applications/MAMP/bin/php/php7.1.12/include/php/main -I/Applications/MAMP/bin/php/php7.1.12/include/php/TSRM -I/Applications/MAMP/bin/php/php7.1.12/include/php/Zend -I/Applications/MAMP/bin/php/php7.1.12/include/php/ext -I/Applications/MAMP/bin/php/php7.1.12/include/php/ext/date/lib  -DHAVE_CONFIG_H  -g -O2   -c /Users/dcoin/Desktop/php-7.1.12/ext/pcntl/pcntl.c -o pcntl.lo
mkdir .libs
 cc -DHAVE_STRUCT_SIGINFO_T -I. -I/Users/dcoin/Desktop/php-7.1.12/ext/pcntl -DPHP_ATOM_INC -I/Users/dcoin/Desktop/php-7.1.12/ext/pcntl/include -I/Users/dcoin/Desktop/php-7.1.12/ext/pcntl/main -I/Users/dcoin/Desktop/php-7.1.12/ext/pcntl -I/Applications/MAMP/bin/php/php7.1.12/include/php -I/Applications/MAMP/bin/php/php7.1.12/include/php/main -I/Applications/MAMP/bin/php/php7.1.12/include/php/TSRM -I/Applications/MAMP/bin/php/php7.1.12/include/php/Zend -I/Applications/MAMP/bin/php/php7.1.12/include/php/ext -I/Applications/MAMP/bin/php/php7.1.12/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /Users/dcoin/Desktop/php-7.1.12/ext/pcntl/pcntl.c  -fno-common -DPIC -o .libs/pcntl.o
 ...

运行 make install

Installing shared extensions:     /Applications/MAMP/bin/php/php7.1.12/lib/php/extensions/no-debug-non-zts-20160303/

配置 php.ini php.ini 文件位置:/Applications/MAMP/bin/php/php7.4.2/conf/php.ini ,添加如下配置

extension=pcntl.so

检测环境

curl -Ss http://www.workerman.net/check.php | php
PHP Version >= 5.3.3                  [OK]
Extension pcntl check                 [OK]
Extension posix check                 [OK]

总结

安装 PHP 自带的扩展都可以用这种方法,例如本文中的 pcntl 扩展。除了用 phpize 编译某个扩展,也可以重新编译整个 PHP,在编译时用参数添加扩展,例如在源码根目录运行

./configure --enable-pcntl --enable-posix ...
make && make install

请自行选择食用~