前言:
pcntl 介紹
pcntl 擴充可以支援 PHP 的多線程操作。(非Unix類系統不支援此模組)
phpize 介紹
phpize 可以用來給 PHP 動態添加擴充。比如編譯 PHP 時忘記添加某擴充,後來想添加該擴充,即可以使用 phpize 動態添加該擴充。
本文將介紹如何使用 phpize 給 Mac下的Integration Environment MAMP 添加 PHP 的 pcntl 擴充。類 Unix 的環境都可以使用本方法安裝,注意靈活變通。
安裝:
下面示範的是給 MAMP的PHP 5.6.10版本添加 pcntl擴充。
下載和本地 PHP 版本對應的源碼包,地址為:
http://www.php.net/releases/
然後按照如下步驟進行編譯:
# 解壓源碼包並初始化目錄
$ tar -xzvf php-5.6.10.tar.gz
$ mv php-5.6.10 php
$ mkdir -p /Applications/MAMP/bin/php/php5.6.10/include
$ mv php /Applications/MAMP/bin/php/php5.6.10/include
# 檢測系統配置
$ cd /Applications/MAMP/bin/php/php5.6.10/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/php5.6.10/lib/php/extensions/no-debug-non-zts-20131226/
# 向php.ini 檔案中添加該擴充
$ echo "extension=pcntl.so" >> /Applications/MAMP/bin/php/php5.6.10/conf/php.ini
# pcntl現在應該已經啟用,要檢查是否安裝成功,只需運行:
$ /Applications/MAMP/bin/php/php5.6.10/bin/php --ri pcntl
pcntl
pcntl support => enabled
如出現以上資訊,則說明該擴充已安裝成功。