溫馨提示×

溫馨提示×

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

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

php擴展開發(fā)的示例分析

發(fā)布時間:2021-08-25 13:42:51 來源:億速云 閱讀:132 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要為大家展示了“php擴展開發(fā)的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學習一下“php擴展開發(fā)的示例分析”這篇文章吧。

具體如下:

一、進入php源碼包,找到ext文件夾

cd /owndata/software/php-5.4.13/ext

文件夾下放的都是php的相關(guān)擴展模塊

二、生成自己的擴展文件夾和相關(guān)文件

php支持開發(fā)者開發(fā)自己的擴展,提供了ext_skel骨架,用來構(gòu)建擴展基本文件

./ext_skel --extname=myext

運行完成后,會在ext目錄下生產(chǎn)一個myext擴展目錄

三、編寫一個hello world簡單測試擴展

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); 這里就是擴展函數(shù)聲明部分,可以增加一

PHP_FUNCTION(myext_helloworld);

3.編輯myext.c文件在這個里面增加一行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擴展

在myext目錄下運行phpize

/usr/local/webserver/php/bin/phpize

安裝擴展

./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

復制myext.so文件到php安裝的擴展目錄下

cp myext.so /usr/local/webserver/php/ext/

編輯php.ini文件加入一行擴展路徑

extension=/usr/local/webserver/php/ext/myext.so

重啟php-fpm

service php restart

查看php擴展是否安裝進去了

/usr/local/webserver/php/bin/php -m|grep myext

確認成功后測試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

運行后輸出

my first ext,Hello World!

自此擴展開發(fā)小demo就實現(xiàn)了

以上是“php擴展開發(fā)的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

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

php
AI