Mac 安裝pcntl模塊
背景
使用機器自帶的PHP(版本是5.6.30)
? 2. ?按照官方的方法安裝(也就是MeepoPS里的鏈接指向文檔)
問題
首先明確的是官方的安裝流程在最新的Mac系統(tǒng)中是無法安裝的
提示需要安裝autoconf這個東東
其次是無法將編譯后的擴展程序?qū)懭隤HP默認的擴展包路徑?
解決辦法
?還是依照網(wǎng)上高人說的,安裝autoconf后再編譯(參考地址),按照這里的步驟安裝,建議先下載源碼再安裝(不建議一開始就使用命令模式獲取源碼)。在安裝過程中會出現(xiàn)有錯誤的提示,無妨直接執(zhí)行安裝到底。
如何確認你是否需要安裝autoconf?參考官方安裝流程,在編譯過程中就會拋出需要安裝autocon f的信息。
如果沒有這個錯誤,那么查看在pcntl這個文件夾(就是位于你下載的PHP版本解壓執(zhí)行后里的擴展文件夾內(nèi))內(nèi)是否有modules這個文件夾,文件夾內(nèi)如果有pcntl.so那么就說明其實你已經(jīng)編譯成功,無需安裝其它東西。
【注意】不建議使用這樣的命令來完成整個編譯?phpize && ./configure && make install ,這不利于你(僅有PHP基礎(chǔ)的伙伴)發(fā)現(xiàn)每一步執(zhí)行的情況,同時留意每一步執(zhí)行后的打印信息,這會告訴你目前編譯的情況。
其次如果你之前沒有折騰過PHP(指沒有對Mac中的PHP動過任何手腳),那么我們就需要重新配置一下php.ini,為什么呢?
因為在新的Mac系統(tǒng)中是無法將擴展包直接寫入到PHP默認的擴展包文件夾內(nèi)(這也就是官方安裝流程后段無法完成操作的原因),即使你開啟root權(quán)限也不行,因為PHP默認的路徑是放在/usr/lib/php,該文件夾系統(tǒng)默認是不允許寫入的,這應(yīng)該是Mac系統(tǒng)最底層的保護機制導(dǎo)致的吧。Mac的本意是希望用戶對系統(tǒng)的操作都放置于/usr/local/里面。所以我們需要對PHP的php.ini做修改。
php.ini文件位于/etc/php.ini.default,也就是系統(tǒng)中并沒有php.ini,而只有php.ini.default,我們需要創(chuàng)建一個php.ini(同一目錄下),文件里面就寫入2行代碼:
extension_dir=/usr/local/php/extensions/ extension=pcntl.so
第一個是指定擴展包存放位置 ,路徑建議:/usr/local/xxx/php/extensions/ ?xxxx你自己定,然后依據(jù)這個路徑創(chuàng)建文件夾(你懂的/usr/local/里面是根本沒有預(yù)設(shè)這些文件夾的)。
第二個一看你就懂了,指定需要使用的擴展模塊。
搞定后,使用sudo命令,將編譯好的pcntl.so復(fù)制到/usr/local/php/extensions/下。重啟apache,使用php -m, 你就能查看目前PHP擴展的所有模塊(其中也包含了pcntl)。
最后
必須要完成編譯,就是想方設(shè)法獲得pcntl.so這個文件,按照官方里說的流程(配合autoconf),是能夠?qū)崿F(xiàn)編譯的(下載跟當前PHP版本相同的PHP源碼)
配置php.ini,重新指定擴展包路徑,將擴展包復(fù)制到指定的路徑即可
如果你被卡在安裝模塊這里,希望能幫到你!當然非常希望您能把更好更方便的解決方案告訴我!
2019-01-14
sudo 如何生成pcntl.so文件
2017-08-07
brew search pcntl