91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

怎么在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

芜湖市| 凤阳县| 万荣县| 潮安县| 沙湾县| 榆社县| 易门县| 石阡县| 凤台县| 高邑县| 安仁县| 饶河县| 遵义市| 龙江县| 洛南县| 津市市| 稷山县| 屏南县| 犍为县| 北川| 涿鹿县| 安乡县| 彭山县| 呼图壁县| 滦平县| 宝清县| 抚松县| 临泉县| 日照市| 三门县| 孟津县| 芜湖市| 连城县| 阜平县| 师宗县| 大余县| 南涧| 化州市| 锡林浩特市| 梅州市| 沁源县|