1,今天在開發專案的時候使用了一個php函數(mb_strcut),運行程式碼時候提示報錯"call to undefind function mb_strcut",首先檢查下函數名沒有寫錯,難道是php.ini中沒有開啟擴展,後來去phpinfo看了確實沒有加載mb_strcut,後台得知這個擴充在官方由mbstring建構
2,去php官方pecl首頁搜尋竟然搜尋不到,MDZZ,what the hell,由於php安裝包中帶有所有的擴展,所以樓主用wget下載一個php5.6.24的源碼包了,php官方下載地址http ://php.net/downloads.php 進入列表選擇一個你需要的php源碼包,由於樓主伺服器用的版本是5.6.24所以果斷下載5.6.24,如果用wget下載的話,默認下載目錄就會當前目錄,weget指令格式狠簡單:wget [url] (不如下載一個php 5.6.25的套件直接這樣wget http://hk1.php.net/get/php-5.6.25.tar.bz2/from/this /mirror) 下載完畢以後會得到一個mirror文件,然後用tar -zxvf mirror 解壓縮得到一個文件夾,進入文件夾內,找到ext,這個文件夾裡麵包含的是php擴展的源文件,找到你需要的擴展,樓主需要的mbstring,找到後,我們就可以用phpize來安裝了。 phpize是官方提供的動態加入擴充的工具,詳細了解可以度娘 phpize
3,首先我要確定當前系統存在phpize,並且可以使用,我們whereis phpize,可以看到搜尋結果,比如樓主的是/usr/bin/phpize,恭喜你,你可以直接使用了,每個人的目錄可能所有不同,一般phpize是包含在/usr/bin下面的,確定了phpize指令執行路徑後,我們進入需要編譯安裝的擴充目錄,樓主就是進入mbstring ,進入目錄後在目前位置輸入指令/usr/bin /phpize 指令執行完畢後,目錄裡面會多幾個文件,有configure.. ,然後輸入 ./configure --with-php-config=/usr/local/php/bin/php-config指令,注意前面是有一個點號額,如果提示錯誤,就說明你的php-config路徑和我的不一致,可以whereis php-config,找到這個文件,然後換成正確的路徑,在沒有報錯的情況下,我們依次執行,make 和make install 指令執行完畢後,它會提示你一個路徑,這個路徑裡面就是我們編譯的好的擴展,比如樓主的生成的擴展在/usr/lib64/php/modules,我們進入這個目錄,就可以看到剛才產生的擴展,在Linux下面擴展的後綴為.so ,樓主的微mbstring.so ,這一步就做好了
4,這一步驟我們需要修改php.ini設定文件,同樣用whereis php.ini 找到Php.ini檔案所在的目錄,一般在/etc目錄下面,找到設定檔後,用vi /etc/php.ini指令或是vim /etc/php.ini指令開啟這個文件,預設是普通模式,我們使用vim快捷鍵G快速定位到字元最底部新增一行 extension=mbstring.so 這一行就是開啟你剛才產生擴展,還有一個問題如果沒有你使用的是預設位置存放擴展,請將剛才產生.so檔案複製到預設資料夾中,如果你在目前設定檔中宣告了extension_dir ,就把擴充檔案放到宣告的資料夾中,這樣才能擴充檔才能被載入到。加入 extension = mbstring後這一步就昨晚了
5,最後一步需要重新啟動伺服器,重啟包括2部分,因為樓主使用的是LNMP,所以需要重啟的是nginx 和php-fpm,如果你使用的Lamp 那麼需要重啟的是apche和php-fpm,如果沒有開啟php-fpm就不需要重新啟動php-fpm,開啟nginx可以使用nginx自帶的管理指令,同樣使用whereis nginx ,找到nginx指令執行目錄,樓主的是/usr/sbin/nginx,輸入/usr/sbin/ nginx -s reload 後重啟nginx服務,前面的路徑一定要是正確的,可能你的和樓主的不一樣,接下來重啟php-fpm,重啟php-fpm,我們先用指令ps -aux |grep php-fpm取得目前系統的包含php-fpm行程列表,我們需要的是載入了php-fpm.conf檔那一個行程的行程號,第二列的數字就是行程號,找到行程號後,使用kill [這裡填入剛才的進程號] ,例如樓主的是31411 ,就是kill 31411 ,這樣做是將php-fpm的進程停掉,然後我們whereis php-fpm 查看php-fpm執行的命令的路徑,樓主的是/usr/sbin /php-fpm,執行/usr/sbin/php-fpm後就可以重新啟動php-fpm,啟動後去phpinfo(),可以看到我們加入的擴充已經在列表中了。至此我們為php添加擴充就已經完成了。如果安裝完以後依然沒有出現的話,就需要仔細排除哪一步做錯了。還有樓主的信箱是jeefs-@outlook.com,有什麼問題可以寄email給我。