Adminxe's Blog | 低调求发展 - 潜心习安全 ,技术永无止境 | 谢谢您对本站的支持,有什么问题或者建议请及时联系:点击这里给我发消息

PHP扩展-扩展的生成和编译

代码审计 Adminxe 2161℃ 0评论

0x00 说明

PHP扩展有两种编译方式

在编译PHP时直接将扩展编译进去

扩展被编译成.so文件,在php.ini里配置加载路径

源码环境

先下载源码,可以通过git clone等,进入源码跟目录,进入插件目录

    cd php-5.6.31cd ext

0x01 创建PHP扩展

执行ext_skel命令生成扩展框架

    ./ext_skel –extname=demo

执行成功后会有一个操作步骤提示

To use your new extension, you will have to execute the following steps:

$ cd ..

$ vi ext/demo/config.m4

$ ./buildconf

$ ./configure –[with|enable]-demo

$ make

$ ./sapi/cli/php -f ext/demo/demo

$ vi ext/demo/demo

$ make

这是源码编译的步骤

0x02 修改文件config.m4

重点看line10-18的代码,用于设置./configure时启用此扩展的命令选项,将其中line16和line18的dnl删掉,把dnl理解为注释符。

    14 dnl Otherwise use enable:

    15

    16 dnl PHP_ARG_ENABLE(myfirstext, whether to enable myfirstext support,

    17 dnl Make sure that the comment is aligned:

    18 dnl [ –enable-myfirstext Enable myfirstext support])

    19

    20 if test “$PHP_MYFIRSTEXT” != “no”; then

    21 dnl Write more examples of tests here…

0x03-1 编译PHP时直接将扩展编译进去

    cd php-src/

    ./buildconf or ./buildconf –force

    ./configure –enable-demo

    make

大概这样子就OK了,但是我没有这样编译过,一般用另一种方式的。同时也推荐用另一种方式

0x03-2 编译成.so文件 【推荐】

cd php-src/ext/demo

    phpize

    ./configure –enable-demo

    make

然后扩展就是成功编译,并且保存在php-src/ext/demo/modules/demo.so

0x04 加载扩展

在php.ini中,添加

    extension=/path/demo.dll

或者

    zend_extension=/path/demo.so

根据不同的扩展类型选择不同的加载方式。

转载请注明:Adminxe's Blog » PHP扩展-扩展的生成和编译

喜欢 (7)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. 这图片还能不能让人好好学技术了?
    jack2021-02-22 10:14 回复