中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在php 5.6版本中編寫一個PHP擴展

發布時間:2020-12-16 15:09:37 來源:億速云 閱讀:170 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關怎么在php 5.6版本中編寫一個PHP擴展,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

首先,下載最新的php源碼安裝包,進入ext/目錄,新建extstrcat.def:

string extstrcat(string strarg, int intarg)


隨后運行:

./ext_skel --extname=extstrcat --proto=extstrcat.def


修改ext/extstrcat/config.m4,去掉如下行前面的注釋(dnl):

PHP_ARG_ENABLE(extstrcat, whether to enable extstrcat support,  
Make sure that the comment is aligned:  
[  --enable-extstrcat           Enable extstrcat support])

此時來編輯ext/extstrcat/extstrcat.c,找到PHP_FUNCTION(extstrcat)函數,這里表示擴展中的方法名為extstrcat,方法實現如下:

PHP_FUNCTION(extstrcat)
{
     char *strarg = NULL;
     int argc = ZEND_NUM_ARGS();
     int strarg_len;
     long intarg;
 
     char intargstr[10];
     int retstrlen = 0;
     char *retstr = NULL;
 
     if (zend_parse_parameters(argc TSRMLS_CC, "sl", &strarg, &strarg_len, &intarg) == FAILURE)
         return;
 
     snprintf(intargstr, 9, "%d", intarg);
     retstrlen = strarg_len + strlen(intargstr) + 1;
     retstr = (char *)malloc(sizeof(char)* retstrlen);
     memset(retstr, '\0', retstrlen);
     strncat(retstr, strarg, strlen(strarg));
     strncat(retstr, intargstr, strlen(intargstr));
     RETURN_STRING(retstr, 1);
 
     php_error(E_WARNING, "extstract: not yet implemented");
}

,其中strarg和intarg即為對應的兩個字符串和整型參數。
接下來要做的事情就是編譯擴展,

phpize
./configure --enable-extstrcat
make

編譯成功之后,在ext/modules目錄下會生成extstrcat.so文件,

cp ./modules/extstrcat.so /usr/local/lib/php/extensions/no-debug-non-zts-20121212/

修改php.ini,增加extension = extstrcat.so。
重啟php-fpm,運行phpinfo()可以看到新增了extstrcat擴展。
現在來寫一個Demo,測試一下剛剛的php擴展,

<?php
if(!extension_loaded('extstrcat')) {
 dl('extstrcat.' . PHP_SHLIB_SUFFIX);
}
$ret=extstrcat('testarg',1234);
echo $ret;
?>

,命令行下運行該文件,得到testarg1234.

上述就是小編為大家分享的怎么在php 5.6版本中編寫一個PHP擴展了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

工布江达县| 大埔区| 周宁县| 宾阳县| 阳曲县| 洞口县| 宁安市| 盐山县| 玉门市| 璧山县| 大田县| 万山特区| 阳谷县| 清水河县| 横峰县| 双柏县| 宁海县| 江安县| 碌曲县| 长治县| 原平市| 晋江市| 上犹县| 长岛县| 常山县| 三明市| 安国市| 沽源县| 泸定县| 黄山市| 晋城| 金沙县| 望城县| 淮北市| 赤峰市| 西充县| 马鞍山市| 平凉市| 林口县| 三亚市| 巩义市|