`
beatzues
  • 浏览: 5178 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • PHP
阅读更多
首先说明一下,PHP扩展有两种编译方式:
方式一:在编译PHP时直接将扩展编译进去
方式二:扩展被编译成.so文件,在php.ini里配置加载路径;

以下开始说明创建PHP扩展并编译的步骤:
下载PHP源码,并解压,在源码的根目录下开始操作,
1. 使用ext_skel生成扩展框架,如下:
➜ php-5.6.24 cd ~/Downloads/tmp/php-5.6.24
➜ php-5.6.24 cd ext
➜ ext ./ext_skel --extname=myfirstext

ext_skel在执行后,会提示开发者后续的操作步骤,这个操作步骤是扩展的两种编译方式里的方式一的步骤, 如下:
To use your new extension, you will have to execute the following steps:

1.  $ cd ..
2.  $ vi ext/plogger/config.m4
3.  $ ./buildconf
4.  $ ./configure --[with|enable]-plogger
5.  $ make
6.  $ ./sapi/cli/php -f ext/plogger/plogger.php
7.  $ vi ext/plogger/plogger.c
8.  $ make


2. 修改文件ext/myfirstext/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...


以上两步骤是公共的,以下将分别介绍编译PHP扩展的两种方式,
方式一:编译PHP时直接将扩展编译进去
3. 在源码根目录下执行./buildconf,如下
4. 在源码根目录下执行./configure –enable-myfirstext
为了减少编译时间,可以在configure阶段指明不编译某些模块,比如:
./configure --without-iconv --enable-debug --enable-myfirstext --disable-cgi --enable-cli --without-pear --disable-xml --without-mysql


5. 在源码根目录下执行make
注意编译成功后,别执行make install了,因为至此,扩展myfirstext已经编译成功,并且已经生成了相应的php二进制文件了,它在./sapi/cli/php

方式二:扩展被编译成.so文件,在php.ini里配置加载路径
3. 在扩展目录ext/myfirstext/下执行phpize命令
4. 在扩展目录ext/myfirstext/下执行./configure –enable-myfirstext命令
5. 在扩展目录ext/myfirstext/下执行make
执行make后会在ext/myfirstext/modules下生成对应的.so文件,在php.ini中配置好加载此文件即可。

校验扩展是否加载成功
执行./sapi/cli/php -f ext/myfirstext/myfirstext.php
或者通过php -m列出所有扩展,查看是否有myfirstext, 执行命令:./sapi/cli/php -m | grep myfirstext
通过以上校验,说明扩展编译成功了。但是到目前为止,还没有编辑过c相关的代码,一切都是ext_skel默认生成的,查看这个扩展myfirstext包含哪些函数呢?如下:
➜ php-5.6.24 ./sapi/cli/php -r 'print_r(get_extension_funcs("myfirstext"));'

OK, 目前为止熟悉了PHP扩展框架的生成,配置,和编译。接下来就要往扩展myfirstext里添加一个自己的函数。
分享到:
评论

相关推荐

    windows下编译php­beast扩展

    在Windows环境下编译PHP-beast扩展是一个较为复杂的过程,涉及到选择合适的编译器、设置编译环境、准备编译文件、以及执行...在编译完成之后,生成的DLL文件需要放置在PHP的扩展目录下,以供PHP程序调用PHP-beast扩展。

    php扩展源码编译包

    对于PHP扩展,还需要使用`phpize`工具生成配置文件,然后通过`./configure --with-XXX[=path]`指定扩展的路径,再进行`make`和`make install`。最后,更新PHP配置文件(php.ini)并重启PHP服务以应用新扩展。 总之...

    php 扩展 -- solr-1.0.1

    本文将详细讲解如何在Linux系统上编译和安装PHP扩展Solr-1.0.1。 **一、系统准备** 1. **系统需求**:确保您的Linux系统是基于Debian或Red Hat家族的,因为这些系统通常包含了编译PHP扩展所需的软件包。 2. **PHP...

    PHP7.2.6安装sodium扩展

    PHP7.2.6安装sodium扩展 ...安装 sodium 扩展模块需要安装 libsodium 依赖项,编译 PHP 源代码,生成扩展模块,并配置扩展模块的路径和名称。这样,开发者就可以使用 sodium 扩展模块来实现高级的加密和解密功能。

    C语言编写的PHP扩展-MVC框架,以高性能为目标。.zip

    C语言编写的PHP扩展可以深入到PHP的核心,提供更高效的数据结构和算法,以处理数据库查询、模板渲染、路由分发等关键任务。在PHP MVC框架中,Model层负责与数据库交互,管理业务逻辑;View层负责展示数据;...

    linux php5.5.7 redis 扩展编译源

    linux下为 php5.5.7支持 redis 扩展编译源 生成so文件 /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make && make install

    wind--php---ffmpeg--32为扩展包

    - 在 Windows 上安装这个扩展,需要确保 PHP 和 FFmpeg 的版本兼容,并正确配置 PHP 的扩展路径。 - 处理大文件或长时间的转码任务时,需要注意内存管理和资源使用,避免因超出系统限制而导致的问题。 总结,...

    php扩展开发编译过程解析

    一个基本的PHP扩展通常包含头文件(.h)、源代码文件(.c)和配置文件(.conf)。头文件定义了扩展的接口,源代码实现扩展的功能,配置文件用于编译时的设置和选项。 3. PHP扩展开发的一般步骤 3.1 准备部分 首先...

    php扩展开发框架生成脚本ext_skel

    `ext_skel`是实际的脚本文件,执行它将启动扩展生成过程。另一方面,`skeleton`可能是一个示例或模板文件,展示了扩展开发的基本结构。开发者可以根据自己的需求修改这个模板,以适应特定的扩展需求。 使用`ext_...

    Ubuntu安装redis和redis-php扩展

    5. 配置和编译 PHP-Redis 扩展: ``` ./configure --with-php-config=/usr/local/php/bin/php-config make make install ``` 6. 安装完成后,使用以下命令测试 PHP-Redis 扩展: ``` php -r "redis_connect('...

    php扩展开发文档

    本文将详细介绍PHP C扩展...总结起来,PHP C扩展开发涉及环境配置、原型设计、扩展骨架生成、C代码实现、编译和配置等多个环节。掌握这些步骤和Zend API,开发者就能灵活地增强PHP的功能,实现高性能的定制解决方案。

    php_memcache-2.2.7-7.0-nts-vc14-x64 扩展DLL

    2.2.7是Memcache PHP扩展的版本号,表示这是该扩展的第2.2.7次更新。7.0则对应于PHP的版本,意味着这个扩展适用于PHP 7.0系列。"nts"代表"Non Thread Safe",意味着这是一个非线程安全版本的扩展,适用于单线程环境...

    基于PHP-CPP+libqrencode+libpng写的用于生成二维码的PHP扩展.zip

    这个目录可能包含了源代码、示例、配置文件、测试用例以及README文档,指导用户如何编译、安装和使用这个PHP扩展。 详细知识点: 1. **PHP-CPP**:PHP-CPP库提供了一种方式,让开发者可以用C++来编写PHP扩展,以...

    php扩展开发与内核应用

    14. 扩展生成器:介绍两个常用的扩展生成器:ext_skel和PECL_Gen。 15. 设置宿主环境:学习如何嵌入PHP到宿主应用程序中,包括嵌入式SAPI的使用,构建和编译宿主应用。 16. 高级嵌入式:涵盖在PHP中进行回调,错误...

    百度编辑器ueditor-dev-1.5.0 utf8-php 编译版

    **百度编辑器ueditor-dev-1.5.0 utf8-php编译版详解** 百度编辑器(UEditor)是一款由百度公司Web前端研发部精心打造的开源富文本Web编辑器。它以其轻量级、高度可定制以及优秀的用户体验而广受开发者喜爱。UEditor...

    php写扩展文档

    ### PHP扩展开发详解 #### 一、引言 ...虽然这是一个基础示例,但它涵盖了开发PHP扩展所需的基本流程和技术要点。随着实践经验的积累,您可以尝试更复杂的功能和更高级的技术,进一步提升自己的开发能力。

    php扩展开发流程,很详细

    通过以上步骤,你已经成功地完成了PHP扩展`myhello`的开发、编译和集成。现在,你可以重新启动Web服务器并测试新扩展的功能。这个过程虽然看似复杂,但它是理解PHP底层工作原理和自定义功能的强大工具。随着对PHP...

    php 扩展调用so动态库 教程

    编译安装扩展库,执行 `phpize`、`./configure`、`make` 和 `make install` 命令。重新配置 PHP,编辑 `php.ini` 文件,添加扩展库的配置信息。重启 web 服务器,并检查扩展库的安装结果。 第二部分:PHP 扩展库...

    linux下PHP扩展的安装(curl)

    2. 编译生成PHP的curl扩展 接下来,我们需要进入PHP的源码目录下的`ext`子目录,找到curl扩展的源代码。假设PHP已安装在`/usr/local/php-5.4.4`,则可以按照以下步骤操作: ``` cd /usr/local/php-5.4.4/ext/curl `...

Global site tag (gtag.js) - Google Analytics