So verwenden Sie die C-Sprache, um Erweiterungen in PHP zu schreiben

青灯夜游
Freigeben: 2023-04-05 18:06:01
nach vorne
3501 Leute haben es durchsucht

本篇文章给大家带来的内容是介绍如何使用C语言给PHP写扩展,,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

1、在php源码路径的ext文件夹下,新建一个extend_test.def文件,编辑文件内容为:

string my_test_function(string str,int n)
Nach dem Login kopieren

2、在当前目录执行

./ext_skel --extname=extend_test --proto=extend_test.def
Nach dem Login kopieren

其中,extname是扩展的名,proto是刚创建的文件,也可以用全路径

3、在当前目录下会生成extend_test文件夹,编辑extend_test文件夹下的config.m4

去掉一下三行的dnl的注释

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])
Nach dem Login kopieren

4、编辑extend_test文件夹下的extend_test.c文件

找到以下方法并修改

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);
}
Nach dem Login kopieren

5、生成扩展:

在extend_test文件夹下,运行/home/php/bin/phpize(实际为phpize所在路径)

然后运行./configure --with-php-config=/home/php/bin/php-config(实际为php-config所在路径)

6、编译安装

make             
make install
Nach dem Login kopieren

7、执行完后会显示扩展安装到了哪个路径下

然后修改php.ini增加扩展信息

extension=extend_test.so
Nach dem Login kopieren

8、测试扩展是否可用

新建test.php文件并将内容编辑为

<?php
echo my_test_function(&#39;a&#39;,5);
Nach dem Login kopieren

保存后用php运行,显示出aaaaa表示扩展成功安装

相关视频教程推荐:《PHP教程

以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关教程栏目!!!

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die C-Sprache, um Erweiterungen in PHP zu schreiben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!