首页 > 技术文章 > mac下编译安装pcntl扩展

xuduan 2021-03-09 11:08 原文

需求

因为本人现在的php7是编译安装的,有些扩展是预先没有指定的,现在我这边缺少pcntl扩展,记录下本人的安装过程。其实mac下安装扩展和linux下差不多。本文只适用已经安装好php的情况

准备

下载源码:点我打开
编译安装:先编译安装好,已安装的再继续以下步骤,安装pcntl扩展
找到扩展:pcntl扩展一般在源码的ext目录下,php-7.1.6/ext/pcntl

步骤

1、模糊查询要安装的扩展是否存在
已存在扩展直接测试该扩展是否可用即可,如果什么都没有返回,则继续第2步

php -m | grep 'pcntl' 

效果如图:
image.png

2、找到pcntl目录位置

cd /Users/xiaoming/php-make/php-7.1.6/ext/pcntl  //注意是你下载的那个源码的目录下

3、生成配置文件

/Users/xiaoming/mnmp/php71/bin/phpize //执行phpize命令

效果如图:
image.png

4、指定配置文件

./configure --enable-pcntl --with-php-config=/Users/xiaoming/mnmp/php71/bin/php-config

效果如图:
image.png
image.png

5、执行make命令

make
make install //安装完成后会提示最终pcntl.so的路径

6、修改配置文件
编辑php配置文件,添加 extension=pcntl.so

php -i | grep php.ini  //查看配置文件位置
vim /Users/xiaoming/mnmp/php71/etc/php.ini  //编辑配置文件

7、重启php-fpm
权限不够可以加上sudo, 配置了nginx或apache也需要重启相关服务

killall php-fpm
php-fpm

8、测试
php中执行pcntl_fork()看能打印出一串数字且不报错即可

<?php
 echo pcntl_fork(); //20583

问题

安装并不是一帆风顺的,中间本人在编译过程出现过找不到某文件之类的莫名其妙c的语法错误,后观察是c编译器版本问题导致编译失败,指定c编辑器的版本后问题可解决。下次有时间再分享下该类问题的解决办法
(另说明,之后会陆续在园子里写文,毕竟其他平台的文章这里发一点那里发一点还是太麻烦了。。。就在园子里它不香吗)

推荐阅读