centos 默認 yum 安裝 php 版本為 5.3, 很多php框架基本上要求5.4以上版本,這時候不能直接 用 yum install php 需要先改yum 源。
1、啟動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二、擴展開發 1、php源碼下載
# wget http://cn2.php.net/distributions/php-5.4.43.tar.gz# tar vzxf php-5.4.42.tar.gz
注意這里下載的版本要跟系統安裝的php版本保持一致,php查看咱在版本命令
php -v
我系統安裝是5.4 的
2、安裝phpize(phpize是用來擴展php擴展模塊的,通過phpize可以建立php的外掛模塊)
# yum install phpize3、ext_skel工具
ext_skel 是php寫擴展提供一個很好用的 “自動構建系統” 使用他可以方便的搭建php擴展。 此工具為php源碼自帶工具位于 源碼里頭的 ext目錄下
# cd /php-5.4.43/ext# ./ext_skel --extname = myext
執行生成擴展后 ext 下面會自動多一個 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、寫簡單的測試c擴展
修改php_myext.h,看到PHP_FUNCTION(confirm_myext_compiled); 這里就是擴展函數聲明部分,可以增加一
PHP_FUNCTION(confirm_myext_compiled);PHP_FUNCTION(myext_helloworld);
然后修改myext.c,這個是擴展函數的實現部分。
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[] */};
這的代碼是將函數指針注冊到Zend引擎,增加一行PHP_FE(myext_helloworld, NULL)(后面不要帶分號)。
在myext.c末尾加myext_helloworld的執行代碼。
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是用來接受PHP傳入的參數,RETURN_XXX宏是用來返回給PHP數據。
5、編譯安裝php擴展# phpize# ./configure# make# make test# make install
跳到php擴展文件加里頭可以看到多了個myext.so 文件
# cd /usr/lib64/php/modules# vim /etc/php.ini
添加一行擴展
extension=myext.so
查看擴展是否安裝成功
php -m
看到多了個myext.so擴展,ok大功告成,接下來我們這看下我們自定義的函數能否正確執行
執行php -r “myext_helloworld(‘test’);”,輸出hello world!
echosong 以前在window下做php擴展 各種問題各種不順,最新發現liunx 下做php擴展比window方便很多。如果想做php擴展的朋友們建議直接上手liunx下開發。
另外感覺liunx c 的開發 ,特別跟操作系統的溝通 各種順暢。O(∩_∩)O~
PHP編程鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答