php擴展源碼
Ⅰ php婧愮爜鏄浠涔堟剰鎬
php婧愮爜鏄浠涔堟剰鎬濓紵
PHP婧愮爜灝辨槸鐢≒HP鑴氭湰璇璦緙栧啓鐨勪竴孌電▼搴忥紝灞炰簬璁$畻鏈虹紪紼嬨備竴涓狿HP緗戦〉涓鍚鏈塒HP浠g爜錛岄偅涔堟妸榪欎釜緗戦〉鐨勬暣涓鍘熷嬫枃浠剁敤緙栬緫鍣ㄦ墦寮錛屾垨鑰呯敤璁頒簨鏈鎵撳紑錛岀湅鍒扮殑灝辨槸PHP婧愮爜銆
PHP璺熷叾瀹冭璦鐩稿規湁涓瀹氱殑浼樺娍錛
1銆丳HP鏄寮鏀劇殑婧愪唬鐮侊細鎵鏈夌殑PHP婧愪唬鐮佷簨瀹炰笂閮藉彲浠ュ緱鍒般
2銆丳HP鏄鍏嶈垂鐨勩傚拰鍏跺畠鎶鏈鐩告瘮錛孭HP鏈韜鍏嶈垂銆
3銆乸hp鐨勫揩鎹鋒э紝紼嬪簭寮鍙戝揩錛岃繍琛屽揩錛屾妧鏈鏈韜瀛︿範蹇銆傚祵鍏ヤ簬HTML錛氬洜涓篜HP鍙浠ヨ宓屽叆浜嶩TML璇璦錛屽畠鐩稿逛簬鍏朵粬璇璦錛岀紪杈戠畝鍗曪紝瀹炵敤鎬у己錛屾洿閫傚悎鍒濆﹁呫
4銆佽法騫沖彴鎬у己錛氱敱浜嶱HP鏄榪愯屽湪鏈嶅姟鍣ㄧ鐨勮剼鏈,鍙浠ヨ繍琛屽湪UNIX銆丩INUX銆乄INDOWS涓嬨
5銆佹晥鐜囬珮錛歅HP娑堣楃浉褰撳皯鐨勭郴緇熻祫婧愩
6銆佸浘鍍忓勭悊錛氱敤PHP鍔ㄦ佸壋寤哄浘鍍
7銆侀潰鍚戝硅薄錛氬湪php5 涓錛岄潰鍚戝硅薄鏂歸潰閮芥湁浜嗗緢澶х殑鏀硅繘錛岀幇鍦╬hp瀹屽叏鍙浠ョ敤鏉ュ紑鍙戝ぇ鍨嬪晢涓氱▼搴忋
鏇村歅HP鐩稿叧鐭ヨ瘑錛岃瘋塊棶PHP涓鏂囩綉錛
Ⅱ 如何安裝php的擴展bcmath
下載或編譯擴展到插件目錄,在php.ini 中啟用,然後重啟web服務
Ⅲ 如何載入php擴展功能
當伺服器上PHP已經安裝好,需要額外添加PHP擴展時怎麼辦?不需要重新安裝PHP,有了phpize我們可以在原有的PHP基礎之上直接安裝擴展庫。
這次編譯僅僅只是單獨編譯PHP的擴展庫,接下來將編譯好的擴展庫加入到現在運行的php中,不對現在運行的php重新編譯,所以沒有一點的影響。
下面我們演示安裝xsl的擴展(不一定常用,僅做為一個範例)
做法一:
1.找到當前運行的php版本的源代碼目錄,如php-5.2.3。進入xsl擴展庫目錄。
$cd /home/pkgs/php-5.3.3/ext/xsl
2.調用phpize程序生成編譯配置文件。
$/home/app/php5.3.3/bin/phpize
3.編譯擴展庫,分別執土豆岩行下面的configure和make命令。
$./configure-with-php-config=/home/app/php5.3.3/bin/php-config
這一步執行通過後,再執行make命令,如果configure執行不通過,則查找錯誤原因。
$make
#make成功執行後,生成的擴展庫文件在當前目錄的 moles子目錄下,
如/home/php-5.3.3/ext/curl/moles/xsl.so
4.配置php.ini文件
#將編譯好的擴展庫文件復制到PHP的擴展目錄下,可通過查看phpinfo信息。。
$ cp /home/pkg/php-5.3.3/ext/xsl/moles/xsl.so /home/app/php5.3.3/lib/php/extensions/no-debug-non-zts-20090626
#在php.ini文件中找到設置擴展目錄的位置,然後將擴展路徑設置到php安裝目錄/extension/no-debug-non....目錄下,並添加擴展庫位置。
extension_dir /home/app/php5.3.3/lib/php/extensions/no-debug-non-zts-20090626」
extension=xsl.so
5.重啟php,查看phpinfo信息戚此,即可看到剛才添加進去的xsl擴展庫。(如果有多個php-fpm進程的話,平滑重啟數御主進程即可:kill -USR2 pid)
Ⅳ 如何編譯安裝PHP擴展
一開始安裝PHP的時候,我們並不知道需要哪些擴展,所以只有等到我們真正用到的時候才想辦法去安裝。
安裝PHP擴展最簡單的辦法就是
sudo apt-get install php5-xxx
但有的時候並非我們所願,源裡面並沒有我們需要的擴展,這時候就需要我們下載源碼自己編譯安裝了。
這篇文章中我將介紹在本地Linux平台下編譯安裝PHP擴展的方法。
現在網站根目錄下創建 index.php 列印基本的配置信息,以驗證我們是否安裝成功。
配置編譯環境
我們需要安裝一些編譯必須的庫,還有 php-dev 版本
Ubuntu
sudo apt-get install php5-dev php5-mysql gcc libpcre3-dev
Fedora
sudo yum install php-devel php-mysqlnd gcc libtool
RHEL
sudo yum install php-devel php-mysql gcc libtool
Suse
yast2 -i php5-pear php5-devel php5-mysql gcc
安裝擴展
PHP有兩種可供安裝的擴展:一種是PHP原生的但是默認沒有安裝的,另一種的第三方開發的擴展。
下面依次介紹兩種擴展的安裝方法:
安裝之前我們需要一份和當前機器上相同版本的PHP源碼
cd code
wget http://cn2.php.net/distributions/php-5.5.9.tar.bz2
tar xvjf php-5.5.9.tar.bz2
cd php-5.5.9
前往此處 下載相應的源碼包。
在 /ext 目錄下面可以看到所有PHP原生的擴展。
安裝原生擴展
以 PHP-intl 為例,這是PHP國際化的擴展。
為了安裝這個擴展我們需要先安裝ICU 庫
sudo apt-get install icu-devtools icu-doc libicu-dev libicu52 libicu52-dbg
ICU 安裝成功之後進入/ext/intl 目錄:
cd intl
phpize
./configure --enable-intl
make
sudo make install
下面解釋一下上面的每個命令:
phpize : 是用來擴展php擴展模塊的,通過phpize可以建立php的外掛模塊
./configure --enable-intl: 配置編譯環境,相當於告訴編譯器編譯PHP源碼的時候加上intl這個擴展。
make: 將會把源碼編譯成 intl.so
make install : 將會把 intl.so 移動到當前安裝的 PHP 的擴展目錄。
接下來我們要做的就是在php.ini中啟用這個擴展,這一步將會在最後給出示例。
安裝第三方擴展
將以這個 擴展為例,這個擴展主要實現了PHP識別條形碼的功能。
先安裝必要的依賴
sudo apt-get install pkg-config
git clone https://github.com/mongodb/mongo-php-driver
cd mongo-php-driver
phpize
./configure
make
sudo make install
將會生成一個文件,將其拷貝到PHP的擴展目錄下面。
啟用擴展
在php.ini中啟用擴展的方式有很多:
直接在php.ini文件中添加 extension=mongo.so,這是最簡單直接的方法。
也可以單獨建一個ini文件,然後在php.ini中包含這些文件就可以了。
下面介紹一下第二種方法:
cd `/etc/php5/mods-available`
這個目錄里可以放新建的ini文件,然後執行
sudo touch mongo.ini
echo "extension=mongo.so" | sudo tee -a mongo.ini
sudo touch intl.ini
echo "extension=intl.so" | sudo tee -a intl.ini
上面的命令將會創建ini文件,並且寫如相應的配置信息。
然後執行下面的命令啟用擴展即可(需要安裝 php5enmod 工具):
sudo php5enmod mongo
sudo php5enmod intl
如果未安裝 php5enmod 工具,則需要手動配置:
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/cli/conf.d/mongo.ini
ln -s /etc/php5/mods-available/intl.ini /etc/php5/cli/conf.d/intl.ini
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/fpm/conf.d/mongo.ini
ln -s /etc/php5/mods-available/intl.ini /etc/php5/fpm/conf.d/intl.ini
最後在執行一下重啟操作就可以了:
sudo service nginx restart
sudo service php5-fpm restart
Ⅳ 如何獲取php擴展庫源代碼包
您需要告訴構建系統在編譯時鏈接到共享庫。這允許依賴項存儲在已編譯的PHP擴展中,在第一次使用時將載入它。
為此,您需要修改config.m4以添加庫。你可以通過PHP_ADD_LIBRARY宏來做到這一點。此宏將一個庫添加到鏈接行並具有該表單PHP_ADD_LIBRARY($name,$append,$var)。第一個參數是庫的名稱; 這是*.so沒有lib前綴的文件的名稱(例如xxx)。第二個參數確定(我推測)是否附加或覆蓋該行; 這應該通常設置為1。最後一個參數是存儲該行的變數名稱。必須將此變數替換為輸出文件PHP_SUBST。
您應該將PHP_ADD_LIBRARY行放在文件中PHP_NEW_EXTENSION宏之前的某個位置config.m4。另外,PHP_ADD_LIBRARY在PHP_CHECK_LIBRARY電話中打包是個好主意。這可確保構建系統在添加庫之前找到庫。請參閱下面的示例。
這是另一個類似於你的SO問題。它有一些你可以遵循的工作實例。另外,我將在這里包含一個簡單示例:
PHP_CHECK_LIBRARY(xxx,xxxfunction,[
PHP_ADD_LIBRARY(xxx,1,XXX_SHARED_LIBADD)],[
AC_MSG_ERROR([])],[])PHP_SUBST([XXX_SHARED_LIBADD])
注意:第二個參數PHP_CHECK_LIBRARY是一個函數,構建系統將檢查它是否找到給定的庫。