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

admin 2022年5月17日11:34:11评论15 views字数 1092阅读3分38秒阅读模式

0x00 说明

PHP扩展有两种编译方式

  1. 在编译PHP时直接将扩展编译进去
  2. 扩展被编译成.so文件,在php.ini里配置加载路径

源码环境

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

cd php-5.6.31
cd ext

0x01 创建PHP扩展

执行ext_skel命令生成扩展框架

./ext_skel --extname=demo

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

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

  1. $ cd ..
  2. $ vi ext/demo/config.m4
  3. $ ./buildconf
  4. $ ./configure –[with|enable]-demo
  5. $ make
  6. $ ./sapi/cli/php -f ext/demo/demo
  7. $ vi ext/demo/demo
  8. $ 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

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

FROM : virzz.com | Author:Virink

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月17日11:34:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   PHP扩展-扩展的生成和编译https://cn-sec.com/archives/1012954.html

发表评论

匿名网友 填写信息