美文网首页PHP学习
MAMP环境PHP添加pcntl扩展

MAMP环境PHP添加pcntl扩展

作者: 飞鱼ll | 来源:发表于2017-08-21 00:13 被阅读95次

    前言:
    pcntl 介绍
    pcntl 扩展可以支持 PHP 的多线程操作。(非Unix类系统不支持此模块)
    phpize 介绍
    phpize 可以用来给 PHP 动态的添加扩展。比如编译 PHP 时忘记添加某扩展,后来想添加该扩展,即可以使用 phpize 动态的添加该扩展。
    本文将介绍如何使用 phpize 给 Mac下的集成环境 MAMP 添加 PHP 的 pcntl 扩展。类 Unix 的环境都可以使用本方法安装,注意灵活变通。

    修改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.0.8/bin:$PATH"
    注:“=”号之后,“:”号之前的路径就是你要修改成的php的路径,我这里选取的是MAMP中自带的7.0.8版本。
    保存后运行: source ~/.bash_profile,可能会报错,不用管。
    就大功告成了,接着我们验证一下,另开terminal,输入which PHP,有没有发现默认php的路径已经修改好了呢。接下来就可以正常使用了,如果还不行,重启电脑就可以了。

    安装:
    下面演示的是给 MAMP的PHP 7.0.8版本添加 pcntl扩展。
    下载和本地 PHP 版本对应的源码包,地址为:
    http://www.php.net/releases/
    然后按照如下步骤进行编译:

    解压源码包并初始化目录

    $ tar -xzvf php-7.0.8.tar.gz
    $ mv php-7.0.8 php
    $ mkdir -p /Applications/MAMP/bin/php/php7.0.8/include
    $ mv php /Applications/MAMP/bin/php/php7.0.8/include
    

    检测系统配置

    $ cd /Applications/MAMP/bin/php/php7.0.8/include/php
    $ ./configure
    

    添加一些标志来告诉系统怎样编译。MAMP PHP已经建成这样,如果不这样做,编译的共享对象将无法工作。

    $ MACOSX_DEPLOYMENT_TARGET=10.10
    $ CFLAGS="-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp"$ CCFLAGS="-arch i386 -arch x86_64 -g -Os -pipe"
    $ CXXFLAGS="-arch i386 -arch x86_64 -g -Os -pipe"
    $ LDFLAGS="-arch i386 -arch x86_64 -bind_at_load"
    $ export CFLAGS CXXFLAGS LDFLAGS CCFLAGS MACOSX_DEPLOYMENT_TARGET
    

    编译 pcntl.so 文件

    $ cd ext/pcntl
    $ phpize
    $ ./configure
    $ make
    

    将编译出来的扩展文件pcntl.so 移动到php的扩展目录

    $ cp modules/pcntl.so /Applications/MAMP/bin/php/php7.0.8/lib/php/extensions/no-debug-non-zts-20151012/   
    

    向php.ini 文件中添加该扩展

    $ echo "extension=pcntl.so" >> /Applications/MAMP/bin/php/php7.0.8/conf/php.ini
    

    pcntl现在应该已经启用,要检查是否安装成功,只需运行:

    $ /Applications/MAMP/bin/php/php7.0.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
    

    参考链接:
    http://blog.csdn.net/lipeiran1987/article/details/54942896
    http://www.jianshu.com/p/ec88a61a0fa8
    http://www.cnblogs.com/wt645631686/p/6868476.html

    添加Swoole扩展

    https://www.shiqidu.com/p/185

    通过brew 安装

    brew install php71
    sudo chown -R $(whoami) $(brew --prefix)/*
    brew link php71
    
    .zshrc 添加
    export PATH=/usr/loacl/opt/php@7.1/bin:$PATH
    export PATH=/usr/loacl/opt/php@7.1/sbin:$PATH
    
    重新打开终端
    

    相关文章

      网友评论

      • 67df5b9bd003:$ MACOSX_DEPLOYMENT_TARGET=10.10
        $ CFLAGS="-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp"$ CCFLAGS="-arch i386 -arch x86_64 -g -Os -pipe"
        $ CXXFLAGS="-arch i386 -arch x86_64 -g -Os -pipe"
        $ LDFLAGS="-arch i386 -arch x86_64 -bind_at_load"
        $ export CFLAGS CXXFLAGS LDFLAGS CCFLAGS MACOSX_DEPLOYMENT_TARGET

        加了这几条命令之后configure无法工作
        checking for cc... cc
        checking whether the C compiler works... no
        configure: error: in `/Applications/MAMP/bin/php/php7.2.7/php/ext/pcntl':
        configure: error: C compiler cannot create executables
        gcc都不好使了
        飞鱼ll:我没有遇到这个问题,下面是我从网上找到的解决方法,不一定有用你可以试一下。
        https://apple.stackexchange.com/questions/216573/cant-compile-source-code-on-mac
      • 2f159a4f469f:$ MACOSX_DEPLOYMENT_TARGET=10.10
        $ CFLAGS="-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp"$ CCFLAGS="-arch i386 -arch x86_64 -g -Os -pipe"
        $ CXXFLAGS="-arch i386 -arch x86_64 -g -Os -pipe"
        $ LDFLAGS="-arch i386 -arch x86_64 -bind_at_load"
        $ export CFLAGS CXXFLAGS LDFLAGS CCFLAGS MACOSX_DEPLOYMENT_TARGET

        问一下上面这些操作怎么取消?按你的方法执行完.phpize之后的./configure会报错,然后就没有然后了
        Start_8528:dyld: lazy symbol binding failed: Symbol not found: _zend_sigaction
        Referenced from: /Applications/MAMP/bin/php/php7.0.31/lib/php/extensions/no-debug-non-zts-20151012/pcntl.so
        Expected in: flat namespace

        dyld: Symbol not found: _zend_sigaction
        Referenced from: /Applications/MAMP/bin/php/php7.0.31/lib/php/extensions/no-debug-non-zts-20151012/pcntl.so
        Expected in: flat namespace

        Abort trap: 6
        请问一下,添加后出现这个提示是怎么回事呢?
        飞鱼ll:[PHP7 的 phpize 不生成 configure](https://laravel-china.org/topics/3087/php7-phpize-does-not-generate-configure)
        [Mac 安装 automake](https://www.jianshu.com/p/d5bf5a5a3436)

      本文标题:MAMP环境PHP添加pcntl扩展

      本文链接:https://www.haomeiwen.com/subject/pgbqdxtx.html