玄元一墨 发表于 2022-9-20 18:15:52

手把手写一个简单的 PHP 扩展

手把手教你写一个PHP扩展,以下通过PHP7.4版本实现,其他版本可能有差异,但整体流程相当。


一、从官网下载源码包


PHP: Downloads


二、创建模块


解压源码,找到 ext 目录,通过下面命令创建一个扩展模块:


./ext_skel.php --ext mymodel

创建成功后,会有以下提示:





三、编写模块的函数


找到创建的模块路径 ext/mymodel


(1)在头文件声明函数


找到 php_mymodel.h


在这个头文件中声明了一个名为 mymodel的PHP空间的函数,在PHP的代码里就可以像普通函数一样调用:


PHP_FUNCTION(mymodel);



(2)编写函数的具体实现


找到 mymodel.c 文件


在PHP空间注册一个函数,函数名是 mymodel

PHP_FE(mymodel, NULL)



然后在文件末尾增加 mymodel 函数的具体实现


PHP_FUNCTION(mymodel) {
      php_printf("hello, mymodel");
}



(3)编译安装模块


1、在 ext/mymodel 目录下执行phpize命令


phpize

2、编译安装模块


切换到 ext/mymodel 目录


./configure --enable-foobar --with-config-path=/usr/local/php/bin/php-config

如果没有报错就可以 make 安装


make && make install

安装完成后会提示扩展文件的生成路径,比如:


Installing shared extensions:   /usr/local/php742/lib/php/extensions/no-debug-non-zts-20190902/


(4)修改php.ini 引入扩展文件


extension=mymodel.so

查看模块是否加载成功


php -m | grep mymodel

四、测试,验证扩展


命令行测试 mymodel 函数,可以看到输出了在扩展定义的语句


php -r "mymodel();"



页: [1]
查看完整版本: 手把手写一个简单的 PHP 扩展