【PHP】编写php扩展
【PHP】编写php扩展第一步下载PHP的源代码如php-5.4.16。解压后进入php-5.4.16/ext目录。输入 ./ext/_skel –extnamemyextmyext就是扩展的名称执行后生成myext目录。ext/_skel是PHP官方提供的用于生成php扩展骨架代码的工具。cd myext。可以看到php/_myext.h、myext.c、config.m4等几个文件。config.m4是AutoConf工具的配置文件用来修改各种编译选项。第二步修改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])下边还有一个 –enable-myext是表示编译到php内核中。with是作为动态链接库载入的。第三步修改php/_myext.h看到PHP/_FUNCTION(confirm/_myext/_compiled); 这里就是扩展函数声明部分可以增加一行 PHP/_FUNCTION(myext/_helloworld); 表示声明了一个myext/_helloworld的扩展函数。然后修改myext.c这个是扩展函数的实现部分。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[] /*/};这的代码是将函数指针注册到Zend引擎增加一行PHP/_FE(myext/_helloworld, NULL)后面不要带分号。第四步在myext.c末尾加myext/_helloworld的执行代码。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(“Hello World!/n”);RETRUN/_TRUE;}zend/_parse/_parameters是用来接受PHP传入的参数RETURN/_XXX宏是用来返回给PHP数据。第五步在myext目录下依次执行phpize、./configure 、make、make install。然后修改php.ini加入extensionmyext.so执行php -r “myext/_helloworld(‘test’);”输出hello world!以上就是怎么写php的扩展的详细内容手把手教你写一个PHP扩展以下通过PHP7.4版本实现其他版本可能有差异但整体流程相当。一、从官网下载源码包PHP: Downloads二、创建模块解压源码找到 ext 目录通过下面命令创建一个扩展模块./ext/_skel.php --ext mymodel创建成功后会有以下提示三、编写模块的函数找到创建的模块路径 ext/mymodel1在头文件声明函数找到 php/_mymodel.h在这个头文件中声明了一个名为 mymodel的PHP空间的函数在PHP的代码里就可以像普通函数一样调用PHP/_FUNCTION(mymodel);2编写函数的具体实现找到 mymodel.c 文件在PHP空间注册一个函数函数名是 mymodelPHP/_FE(mymodel, NULL)然后在文件末尾增加 mymodel 函数的具体实现PHP/_FUNCTION(mymodel) {php/_printf(“hello, mymodel”);}3编译安装模块1、在 ext/mymodel 目录下执行phpize命令phpize2、编译安装模块切换到 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 引入扩展文件extensionmymodel.so查看模块是否加载成功php -m | grep mymodel四、测试验证扩展命令行测试 mymodel 函数可以看到输出了在扩展定义的语句php -r “mymodel();”《网络安全从零到精通全套学习大礼包》96节从入门到精通的全套视频教程免费领取如果你也想通过学网络安全技术去帮助就业和转行我可以把我自己亲自录制的96节 从零基础到精通的视频教程以及配套学习资料无偿分享给你。网络安全学习路线图想要学习 网络安全作为新手一定要先按照路线图学习方向不对努力白费。对于从来没有接触过网络安全的同学我帮大家准备了从零基础到精通学习成长路线图以及学习规划。可以说是最科学最系统的学习路线大家跟着这个路线图学习准没错。配套实战项目/源码所有视频教程所涉及的实战项目和项目源码学习电子书籍学习网络安全必看的书籍和文章的PDF市面上网络安全书籍确实太多了这些是我精选出来的面试真题/经验以上资料如何领取
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2606803.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!