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
请自行选择食用~