如何在Mac OSX High Sierra 10.13.4上无Homebrew安装PHP扩展pcntl
解决MacBook Pro High Sierra上安装PHP pcntl扩展的问题
我之前在类似的环境下踩过这个坑,Homebrew迁移PHP包后确实把pcntl这类偏底层的扩展给移除了,给你几个亲测有效的方案:
方案一:从源码编译PHP并启用pcntl
这是最直接的解决办法,自己编译时可以手动开启pcntl支持:
- 先安装编译所需的基础依赖:
brew install autoconf pkg-config - 下载和你当前使用的PHP版本完全一致的源码包(比如你用的是PHP 7.2,就对应下载7.2.x的源码),解压后进入源码目录
- 执行配置命令,务必加上
--enable-pcntl参数(路径可以根据自己的需求调整,下面示例是安装到Homebrew常用的PHP目录):./configure --prefix=/usr/local/opt/php@7.2 --enable-pcntl - 编译并安装:
make && make install - 最后把编译好的PHP路径加入系统PATH,或者替换掉当前的PHP软链接,确保使用的是新编译的版本。
方案二:用php-build工具快速安装带pcntl的PHP
php-build是专门用来编译多版本PHP的工具,能帮你省去手动配置的麻烦:
- 先安装php-build:
brew install php-build - 查看支持安装的PHP版本列表:
php-build --definitions - 选择合适的版本,编译时指定启用pcntl(示例是把7.2.34版本安装到用户目录下):
php-build 7.2.34 ~/.php/7.2-pcntl -- --enable-pcntl - 修改你的shell配置文件(比如
~/.zshrc或~/.bash_profile),把这个版本的PHP路径加入PATH:export PATH="$HOME/.php/7.2-pcntl/bin:$PATH" - 重启shell后,运行
php -v确认版本,再用php -m检查pcntl是否已加载。
方案三:用Docker替代本地PHP环境
如果不想在本地折腾编译,用Docker是最省心的选择:
- 拉取官方的PHP CLI镜像(选和你需求匹配的版本):
docker pull php:7.2-cli - 运行容器时挂载你的代码目录,就能在容器里直接使用带pcntl的PHP了:
进入容器后,执行docker run -v /path/to/your/code:/app -it php:7.2-cli bashphp -m就能看到pcntl已经默认启用了。
额外提醒
- 因为你的系统是High Sierra 10.13.4,尽量选择支持该系统的PHP版本(比如PHP 7.2、7.3,新版本可能不再兼容老系统)
- 编译前记得卸载当前Homebrew安装的PHP,避免版本冲突:
brew uninstall --force php
内容的提问来源于stack exchange,提问作者Emmezali
相关产品推荐
相关产品推荐

