使用C語言開發PHP擴展(轉)

本篇文章給你們帶來的內容是介紹如何使用C語言給PHP寫擴展,,有必定的參考價值,有須要的朋友能夠參考一下,但願對你有所幫助。php

 

一、在php源碼路徑的ext文件夾下,新建一個extend_test.def文件,編輯文件內容爲:測試

1spa

string my_test_function(string str,int n)code

二、在當前目錄執行ci

1源碼

./ext_skel --extname=extend_test --proto=extend_test.defstring

其中,extname是擴展的名,proto是剛建立的文件,也能夠用全路徑it

三、在當前目錄下會生成extend_test文件夾,編輯extend_test文件夾下的config.m4io

去掉一下三行的dnl的註釋編譯

1

2

3

PHP_ARG_ENABLE(extend_test, whether to enable extend_test support,

Make sure that the comment is aligned:

[  --enable-extend_test           Enable extend_test support])

四、編輯extend_test文件夾下的extend_test.c文件

找到如下方法並修改

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

PHP_FUNCTION(my_test_function)

{

    char *str = NULL;

    int argc = ZEND_NUM_ARGS();

    size_t str_len;

    zend_long n;

    char *result;

    char *ptr;

    zend_long result_length;

    if (zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE)

        return;

    result_length = str_len * n;

    result = (char *) emalloc(result_length + 1);

    ptr = result;

    while (n--) {

        memcpy(ptr, str, str_len);

        ptr += str_len;

    }

    *ptr = '\0';

    RETURN_STRINGL(result, result_length);

}

五、生成擴展:

在extend_test文件夾下,運行/home/php/bin/phpize(實際爲phpize所在路徑)

而後運行./configure --with-php-config=/home/php/bin/php-config(實際爲php-config所在路徑)

六、編譯安裝

1

2

make            

make install

七、執行完後會顯示擴展安裝到了哪一個路徑下

而後修改php.ini增長擴展信息

1

extension=extend_test.so

八、測試擴展是否可用

新建test.php文件並將內容編輯爲

1

2

<?php

echo my_test_function('a',5);

保存後用php運行,顯示出aaaaa表示擴展成功安裝

相關文章
相關標籤/搜索