Mac MAMP PRO 编译安装PHP Pcntl扩展
环境: MAC OS 10.14、MAMP PRO 5.1
最近有个项目需要用到WebSocket技术,加上公司项目开发框架是Thinkphp5,于是选择Workerman+Thinkphp5进行开发。最主要的原因就是Thinkphp官方已经集成了Workerman,涂个方便。
Workerman要求PHP必须安装pcntl、posix两个扩展,但是MAMP PRO预装的PHP里并没有pcntl,于是决定编译安装。
准备工作:
- 下载源码包 :我在MAMP PRO使用的PHP版本是5.6.37,要去PHP官方下载对应的源码包。下载地址 http://php.net/releases/ 找到你对应的PHP版本下载。我下载的是
php-5.6.37.tar.gz
- 找到正确的php.ini:MAMP PRO 是支持多个PHP版本的,每个版本都对应有不同的php.ini。比如我的PHP版本是5.6.37那么对应的目录是
MAMP PRO根目录下的bin/php5.6.37/conf/php.ini
切记切记切记,重要的事情说三遍
遇坑:
- 之前直接在MAMP PRO里修改php.ini怎么都不生效
- 修改MAMP PRO的模板配置文件也不生效
File->Edit Template->PHP->5.6.37
开始工作:
把刚刚下载好的源码包解压后在终端执行以下命令
-
进入源码包找到pcntl扩展目录。
$ cd 你的下载目录/php-5.6.37/ext/pcntl
-
使用phpize生成configure。(根据你自己的phpize执行)
$ /Applications/MAMP/bin/php/php5.6.37/bin/phpize
如果中途提示autoconf未安装请执行brew install autoconf
不懂brew就去这里看 https://www.jianshu.com/p/32a4fb9fc4ba -
执行configure。
$ ./configure --with-php-config=/Applications/MAMP/bin/php/php5.6.37/bin/php-config
-
编译生成.so文件。
$ make && make install
当编译完成后看到
那么恭喜你编译成功。
生成的.so文件:/Applications/MAMP/bin/php/php5.6.37/lib/php/extensions/no-debug-non-zts-20131226/pcntl.so
-
把编译好的pcntl.so加入php.ini文件
打开MAMP PRO根目录下的bin/php5.6.37/conf/php.ini
添加一行extension=pcntl.so
6.最后一步重启MAMP PRO
终端运行 $ /Applications/MAMP/bin/php/php5.6.37/bin/php -m
查看pcntl是否被正确加载
大功造成!!!!!