centos 默認(rèn) yum 安裝 php 版本為 5.3, 很多php框架基本上要求5.4以上版本,這時(shí)候不能直接 用 yum install php 需要先改yum 源。
1、啟動(dòng)REMI源1 # cd /tmp2 # wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm 3 # wget http://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm2、rpm安裝
# rpm -Uvh remi-release-6.rpm epel-release-6-8.noarch.rpm3、安裝 >=5.4以上php
# yum --enablerepo=remi install php二、擴(kuò)展開(kāi)發(fā) 1、php源碼下載
# wget http://cn2.php.net/distributions/php-5.4.43.tar.gz# tar vzxf php-5.4.42.tar.gz
注意這里下載的版本要跟系統(tǒng)安裝的php版本保持一致,php查看咱在版本命令
php -v
我系統(tǒng)安裝是5.4 的
2、安裝phpize(phpize是用來(lái)擴(kuò)展php擴(kuò)展模塊的,通過(guò)phpize可以建立php的外掛模塊)
# yum install phpize3、ext_skel工具
ext_skel 是php寫(xiě)擴(kuò)展提供一個(gè)很好用的 “自動(dòng)構(gòu)建系統(tǒng)” 使用他可以方便的搭建php擴(kuò)展。 此工具為php源碼自帶工具位于 源碼里頭的 ext目錄下
# cd /php-5.4.43/ext# ./ext_skel --extname = myext
執(zhí)行生成擴(kuò)展后 ext 下面會(huì)自動(dòng)多一個(gè) myext文件夾
# cd myext# vim config.m4
將 config.m4文件里面
dnl PHP_ARG_WITH(myext, for myext support,dnl Make sure that the comment is aligned:dnl [ --with-myext Include myext support])
修改成
PHP_ARG_WITH(myext, for myext support,[ --with-myext Include myext support])4、寫(xiě)簡(jiǎn)單的測(cè)試c擴(kuò)展
修改php_myext.h,看到PHP_FUNCTION(confirm_myext_compiled); 這里就是擴(kuò)展函數(shù)聲明部分,可以增加一
PHP_FUNCTION(confirm_myext_compiled);PHP_FUNCTION(myext_helloworld);
然后修改myext.c,這個(gè)是擴(kuò)展函數(shù)的實(shí)現(xiàn)部分。
const zend_function_entry myext_functions[] = { PHP_FE(confirm_myext_compiled, NULL) /* For testing, remove later. */ PHP_FE(myext_helloworld, NULL) PHP_FE_END /* Must be the last line in myext_functions[] */}; 這的代碼是將函數(shù)指針注冊(cè)到Zend引擎,增加一行PHP_FE(myext_helloworld, NULL)(后面不要帶分號(hào))。
在myext.c末尾加myext_helloworld的執(zhí)行代碼。
PHP_FUNCTION(myext_helloworld){ char *arg = NULL; int arg_len, len; char *strg; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) { return; } php_printf("Hello World!"); RETRUN_TRUE;} zend_parse_parameters是用來(lái)接受PHP傳入的參數(shù),RETURN_XXX宏是用來(lái)返回給PHP數(shù)據(jù)。
5、編譯安裝php擴(kuò)展# phpize# ./configure# make# make test# make install
跳到php擴(kuò)展文件加里頭可以看到多了個(gè)myext.so 文件
# cd /usr/lib64/php/modules# vim /etc/php.ini
添加一行擴(kuò)展
extension=myext.so
查看擴(kuò)展是否安裝成功
php -m
看到多了個(gè)myext.so擴(kuò)展,ok大功告成,接下來(lái)我們這看下我們自定義的函數(shù)能否正確執(zhí)行
執(zhí)行php -r “myext_helloworld(‘test’);”,輸出hello world!
echosong 以前在window下做php擴(kuò)展 各種問(wèn)題各種不順,最新發(fā)現(xiàn)liunx 下做php擴(kuò)展比window方便很多。如果想做php擴(kuò)展的朋友們建議直接上手liunx下開(kāi)發(fā)。
另外感覺(jué)liunx c 的開(kāi)發(fā) ,特別跟操作系統(tǒng)的溝通 各種順暢。O(∩_∩)O~
PHP編程鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答
圖片精選