Mac 安装pcntl模块
背景
使用机器自带的PHP(版本是5.6.30)
2. 按照官方的方法安装(也就是MeepoPS里的链接指向文档)
问题
首先明确的是官方的安装流程在最新的Mac系统中是无法安装的
提示需要安装autoconf这个东东
其次是无法将编译后的扩展程序写入PHP默认的扩展包路径
解决办法
还是依照网上高人说的,安装autoconf后再编译(参考地址),按照这里的步骤安装,建议先下载源码再安装(不建议一开始就使用命令模式获取源码)。在安装过程中会出现有错误的提示,无妨直接执行安装到底。
如何确认你是否需要安装autoconf?参考官方安装流程,在编译过程中就会抛出需要安装autocon f的信息。
如果没有这个错误,那么查看在pcntl这个文件夹(就是位于你下载的PHP版本解压执行后里的扩展文件夹内)内是否有modules这个文件夹,文件夹内如果有pcntl.so那么就说明其实你已经编译成功,无需安装其它东西。
【注意】不建议使用这样的命令来完成整个编译 phpize && ./configure && make install ,这不利于你(仅有PHP基础的伙伴)发现每一步执行的情况,同时留意每一步执行后的打印信息,这会告诉你目前编译的情况。
其次如果你之前没有折腾过PHP(指没有对Mac中的PHP动过任何手脚),那么我们就需要重新配置一下php.ini,为什么呢?
因为在新的Mac系统中是无法将扩展包直接写入到PHP默认的扩展包文件夹内(这也就是官方安装流程后段无法完成操作的原因),即使你开启root权限也不行,因为PHP默认的路径是放在/usr/lib/php,该文件夹系统默认是不允许写入的,这应该是Mac系统最底层的保护机制导致的吧。Mac的本意是希望用户对系统的操作都放置于/usr/local/里面。所以我们需要对PHP的php.ini做修改。
php.ini文件位于/etc/php.ini.default,也就是系统中并没有php.ini,而只有php.ini.default,我们需要创建一个php.ini(同一目录下),文件里面就写入2行代码:
extension_dir=/usr/local/php/extensions/ extension=pcntl.so
第一个是指定扩展包存放位置 ,路径建议:/usr/local/xxx/php/extensions/ xxxx你自己定,然后依据这个路径创建文件夹(你懂的/usr/local/里面是根本没有预设这些文件夹的)。
第二个一看你就懂了,指定需要使用的扩展模块。
搞定后,使用sudo命令,将编译好的pcntl.so复制到/usr/local/php/extensions/下。重启apache,使用php -m, 你就能查看目前PHP扩展的所有模块(其中也包含了pcntl)。
最后
必须要完成编译,就是想方设法获得pcntl.so这个文件,按照官方里说的流程(配合autoconf),是能够实现编译的(下载跟当前PHP版本相同的PHP源码)
配置php.ini,重新指定扩展包路径,将扩展包复制到指定的路径即可
如果你被卡在安装模块这里,希望能帮到你!当然非常希望您能把更好更方便的解决方案告诉我!