本人开发平台是mac,使用的是mamp集成化的环境工具,最近为了socket编程,选择了php的workerman,在工作之前我们需要安装workerman的依赖环境,目前我们知道mac电脑是自带PHP的,然而mamp自己也给集成了php,一般为了方便使用,我们会使用mamp自带的php,而忽略mac自带的php,所有我们需要将默认的php由原先系统的指向mamp的php
1.修改bash_profile文件切换Mac默认PHP版本为MAMP
把mac上的默认php修改为MAMP等扩展环境中的php 版本,也就是不使用 mac 自带的。步骤如下:
打开terminal。输入locate ~/.bash_profile, 找到我们需要编辑的文件的路径。
cd 到该目录下执行sudo vim ~/.bash_profile,这个文件也有可能没有,如果没有就新建一个。
在vim中打开或新建好该文件后在文件末尾添加
export PATH=”/Applications/MAMP/bin/php/php7.2.8/bin:$PATH”
注:“=”号之后,“:”号之前的路径就是你要修改成的php的路径,我这里选取的是MAMP中自带的7.2.8/版本。
保存后运行: source ~/.bash_profile,可能会报错,不用管。
就大功告成了,接着我们验证一下,另开terminal,输入which PHP,有没有发现默认php的路径已经修改好了呢。接下来就可以正常使用了,如果还不行,重启电脑就可以了。
2.关于workerman的扩展安装
我们通过以下命令可以检测workerman扩展是否满足
curl -Ss http://www.workerman.net/check.php | php
目前我的环境是已经安装好了,不出意外的话您的第二行pcntl扩展是没有安装的,下面我来教你如何安装pcntl扩展
1.我们需要去官网下载对应的php版本替换mamp自带的版本,mamp自带很多版本的,没有必要都下载,一般我会使用mamp自带的最新的版本,我的版本是7.2.8,我就会去官网找到对应的版本
地址为:
http://www.php.net/releases/
2.我们需要将下载的版本解压退换掉mamp的PHP版本,命令如下,你也可以不用命令,自己解压,手动移动到对应的文件夹替换即可
$ tar -xzvf php-7.2.8.tar.gz
$ mv php-7.2.8 php
$ mkdir -p /Applications/MAMP/bin/php/php7.2.8/include
$ mv php /Applications/MAMP/bin/php/php7.2.8/include
3.检测系统配置
$ cd /Applications/MAMP/bin/php/php7.2.8/include/php
$ ./configure
如果你没有出错,那恭喜你了,我这边是有出错的,如下图
这时候更换下configure命令由./configure改为./configure –without-iconv得已解决
4.编译 pcntl.so 文件(这是我们的关键)
$ cd ext/pcntl
$ phpize
$ ./configure
$ make
这样不出意外你是已经编译成功了
5.将编译出来的扩展文件pcntl.so 移动到php的扩展目录
$ cp modules/pcntl.so /Applications/MAMP/bin/php/php7.2.8/lib/php/extensions/no-debug-non-zts-20170712/
注意 no-debug-non-zts-20170712/每个人是不一样的,你查看下你的文件夹名字是什么,替换即可,或者你手动复制过去即可
6.向php.ini 文件中添加该扩展(关键)
$ echo "extension=pcntl.so" >> /Applications/MAMP/bin/php/php7.2.8/conf/php.ini
7.检测环境是否ok
$ /Applications/MAMP/bin/php/php7.2.8/bin/php --ri pcntl
pcntl
pcntl support => enabled
如出现以上信息,则说明该扩展已安装成功。
PHP动态编译出现Cannot find autoconf的解决方法
wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz
tar -zvxf m4-1.4.9.tar.gz
cd m4-1.4.9/
./configure && make && make install
cd ../
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.62.tar.gz
tar -zvxf autoconf-2.62.tar.gz
cd autoconf-2.62/
./configure && make && make install
Add comment