首页 >后端开发 >php教程 > 正文

PHP C扩展初探

原创2016-07-29 08:55:380708
说明

环境:

 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教程有兴趣的朋友有所帮助。

  • 微信
  • php中文网最新课程二维码

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理

  • 相关标签:php newext skel phpinfo config
  • 相关文章

    相关视频


    网友评论

    文明上网理性发言,请遵守 新闻评论服务协议

    我要评论
  • 专题推荐

    作者信息

    php中文网

    认证0级讲师

    推荐视频教程
  • javascript初级视频教程javascript初级视频教程
  • jquery 基础视频教程jquery 基础视频教程
  • 视频教程分类