php擴(kuò)展開(kāi)發(fā)入門(mén)demo示例
本文實(shí)例講述了php擴(kuò)展開(kāi)發(fā)。分享給大家供大家參考,具體如下:
一、進(jìn)入php源碼包,找到ext文件夾
cd /owndata/software/php-5.4.13/ext
文件夾下放的都是php的相關(guān)擴(kuò)展模塊
二、生成自己的擴(kuò)展文件夾和相關(guān)文件
php支持開(kāi)發(fā)者開(kāi)發(fā)自己的擴(kuò)展,提供了ext_skel骨架,用來(lái)構(gòu)建擴(kuò)展基本文件
./ext_skel --extname=myext
運(yùn)行完成后,會(huì)在ext目錄下生產(chǎn)一個(gè)myext擴(kuò)展目錄
三、編寫(xiě)一個(gè)hello world簡(jiǎn)單測(cè)試擴(kuò)展
cd myext
1.編輯myext目錄下的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])
2.編輯php_myext.h文件
修改php_myext.h,看到PHP_FUNCTION(confirm_myext_compiled);
這里就是擴(kuò)展函數(shù)聲明部分,可以增加一
PHP_FUNCTION(myext_helloworld);
3.編輯myext.c文件在這個(gè)里面增加一行PHP_FE(myext_helloworld, NULL)
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[] */ };
最后在文件末尾加入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("my first ext,Hello World!\n"); RETRUN_TRUE; }
四、編譯php擴(kuò)展
在myext目錄下運(yùn)行phpize
/usr/local/webserver/php/bin/phpize
安裝擴(kuò)展
./configure --with-php-config=/usr/local/webserver/php/bin/php-config make && make install
然后在php安裝的目錄下生產(chǎn).so的文件
/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/myext.so
復(fù)制myext.so文件到php安裝的擴(kuò)展目錄下
cp myext.so /usr/local/webserver/php/ext/
編輯php.ini文件加入一行擴(kuò)展路徑
extension=/usr/local/webserver/php/ext/myext.so
重啟php-fpm
service php restart
查看php擴(kuò)展是否安裝進(jìn)去了
/usr/local/webserver/php/bin/php -m|grep myext
確認(rèn)成功后測(cè)試myext打印helloworld
/usr/local/webserver/php/bin/php -r "myext_helloworld('test');"
或者創(chuàng)建demo.php
<?php echo myext_helloworld('test'); ?>
/usr/local/webserver/php/bin/php demo.php
運(yùn)行后輸出
my first ext,Hello World!
自此擴(kuò)展開(kāi)發(fā)小demo就實(shí)現(xiàn)了
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《PHP擴(kuò)展開(kāi)發(fā)教程》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《php curl用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》及《php字符串(string)用法總結(jié)》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- PHP擴(kuò)展開(kāi)發(fā)教程(總結(jié))
- PHP擴(kuò)展開(kāi)發(fā)入門(mén)教程
- PHP內(nèi)核介紹及擴(kuò)展開(kāi)發(fā)指南—基礎(chǔ)知識(shí)
- 初步介紹PHP擴(kuò)展開(kāi)發(fā)經(jīng)驗(yàn)分享
- PHP7擴(kuò)展開(kāi)發(fā)教程之Hello World實(shí)現(xiàn)方法示例
- PHP7擴(kuò)展開(kāi)發(fā)之基于函數(shù)方式使用lib庫(kù)的方法詳解
- PHP7擴(kuò)展開(kāi)發(fā)之hello word實(shí)現(xiàn)方法詳解
- 快速開(kāi)發(fā)一個(gè)PHP擴(kuò)展圖文教程
- 詳解Window7 下開(kāi)發(fā)php擴(kuò)展
- 一個(gè)簡(jiǎn)單php擴(kuò)展介紹與開(kāi)發(fā)教程
- 關(guān)于嘗試開(kāi)發(fā)PHP的MYSQL擴(kuò)展的使用
- windows下開(kāi)發(fā)并編譯PHP擴(kuò)展的方法
相關(guān)文章
php幾個(gè)預(yù)定義變量$_SERVER用法小結(jié)
這篇文章主要介紹了php幾個(gè)預(yù)定義變量$_SERVER用法,實(shí)例總結(jié)了服務(wù)器端預(yù)定義變量$_SERVER的常見(jiàn)用法,需要的朋友可以參考下2014-11-11PHP利用func_get_args和func_num_args函數(shù)實(shí)現(xiàn)函數(shù)重載實(shí)例
這篇文章主要介紹了PHP利用func_get_args和func_num_args函數(shù)實(shí)現(xiàn)函數(shù)重載的方法,實(shí)例展示了PHP實(shí)現(xiàn)重載的具體方法,是非常實(shí)用的技巧,需要的朋友可以參考下2014-11-11PHP基于phpqrcode生成帶LOGO圖像的二維碼實(shí)例
這篇文章主要介紹了PHP基于phpqrcode生成帶LOGO圖像的二維碼,可實(shí)現(xiàn)生成帶logo與不帶logo兩種二維碼的功能,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-07-07html靜態(tài)頁(yè)面調(diào)用php文件的方法
這篇文章主要介紹了html靜態(tài)頁(yè)面調(diào)用php文件的方法,在進(jìn)行應(yīng)用程序開(kāi)發(fā)過(guò)程中非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-11-11PHP 數(shù)據(jù)庫(kù) 常見(jiàn)問(wèn)題小結(jié)
揭露 PHP 應(yīng)用程序中出現(xiàn)的五個(gè)常見(jiàn)數(shù)據(jù)庫(kù)問(wèn)題 —— 包括數(shù)據(jù)庫(kù)模式設(shè)計(jì)、數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)和使用數(shù)據(jù)庫(kù)的業(yè)務(wù)邏輯代碼 —— 以及它們的解決方案。2009-06-06