• 技术文章 >后端开发 >php教程

    PHP C扩展初探

    2016-07-29 08:55:38原创1109
    说明

    环境:

     ubuntu14.4 
     php5.5.9 通过apt-get 安装
    

    因为不同于编译安装的php,需要重新下载php源码进行扩展。

    $ sudo apt-get source php5 

    保存目录可自定义
    打开源码文件进入到ext中,这里是存放扩展的地方,我们可以看到有 许多官方的扩展
    这里可以科普一下php源码的主要目录以及功能
    ./main包含PHP主要宏定义
    ./pear 包含PEAR核心文件
    ./sapi 包含不同服务器抽象层代码
    ./Zend包含引擎的所有文件
    我们要用到php-dev包,编译安装下会内置
    $sudo apt-get install php5-dev
    $phpize-v
    验证安装是否成功

    正式开始扩展

    使用ext_skel 这个文件就在ext目录下
    $./ext_skel --extname=newext
    很多教程上都是这一句命令,但我在使用过程中发现了会在后续过程中无法找到newext.c文件
    查找刚才的操作,发现会报cannot open /skeleton.c: No such file 原来是找不到skeleton.c 我们可以通过查看ext_skel发现

    PHP  C扩展初探
    所以需要指定skel的path
    删除原先newext目录,重新走一遍
    $ ./ext_skel --extname=newext --skel=/usr/lib/php5/skeleton
    成功后返回
    PHP  C扩展初探

    根据提示我们需要更改 /newext2/config.m4 的注释
    PHP  C扩展初探

    $cd newext2
    $phpize
    $./configure --with-php-config=/usr/bin/php-config$make

    在这里需要注意,如果出现make无规则错误 需要查看php-config路径是否正确
    若编译成功会如下所示
    PHP  C扩展初探

    $make test 
    $make install

    接着我们就修改php.ini文件
    增加extension = newext2.so
    注意cli模式和cgi模式下的php.ini文件是不一样的,我在刚开始实验的时候发现cli模式下使用

    $usr/bin/php -m

    并没有发现newext2的扩展
    后来在cgi下输出phpinfo却能看到
    后来 在cli下 输出phpinfo 找到php.ini的路径作出修改最后成功
    控制台下phpinfo输出过大可以使用下面方法

    $ php phpinfo.php | less
    

    找到路径后进行更改
    PHP  C扩展初探
    修改后别忘记restart apache

    网上有很多相关的教程,我参考了《PHP和新技术与最佳实践》第七章和自己在实际操作遇到的问题进行整理总结,特别针对非编译安装PHP的情况,主要是注意配置文件的路径问题。

    ').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
  • ').text(i)); }; $numbering.fadeIn(1700); }); });

    以上就介绍了PHP C扩展初探,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:php newext skel phpinfo config
    上一篇:PHP函数split 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)
  • 相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 工具包分享:PHP实现滑块验证图片• 请教QQ互联的代码是如何写的? • 没有上载的分数了,vip次数也用完了啊 • PHP登录跳转,该怎么处理 • 注册信息添加到数据库,该怎么处理
    1/1

    PHP中文网