linux下 C语言对 php 扩展


Posted in PHP onDecember 14, 2008

一,搭建php环境
下载php 5.2.6 源码 并解压
编译安装,搭建php环境

二,创建扩展项目

进入源码目录
cd php5.2.6/ext/
./ext_skel --extname=my_ext
创建名字为my_ext的项目,最终会生成my_ext.so

三,更改配置和程序
$ vi ext/my_ext/config.m4

根据你自己的选择将

dnl PHP_ARG_WITH(my_ext, for my_ext support,
dnl Make sure that the comment is aligned:

dnl [  --with-my_ext             Include my_ext support])
修改成

PHP_ARG_WITH(my_ext, for my_ext support,
Make sure that the comment is aligned:

[  --with-my_ext             Include my_ext support])
或者将

dnl PHP_ARG_ENABLE(my_ext, whether to enable my_ext support,
dnl Make sure that the comment is aligned:

dnl [  --enable-my_ext           Enable my_ext support])
修改成

PHP_ARG_ENABLE(my_ext, whether to enable my_ext support,

Make sure that the comment is aligned:
[  --enable-my_ext           Enable my_ext support])

$ vi ext/my_ext/php_my_ext.h


PHP_FUNCTION(confirm_my_ext_compiled);       /* For testing, remove later. */
更改为
PHP_FUNCTION(say_hello);    

$ vi ext/my_ext/my_ext.c


zend_function_entry php5cpp_functions[] = {
        PHP_FE(confirm_my_ext_compiled,      NULL) /* For testing, remove later. */
        {NULL, NULL, NULL}      /* Must be the last line in php5cpp_functions[] */
};
更改为
zend_function_entry php5cpp_functions[] = {
        PHP_FE(say_hello,       NULL)         
        {NULL, NULL, NULL}      /* Must be the last line in php5cpp_functions[] */
};

在最后添加:
PHP_FUNCTION(say_hello)
{
        zend_printf("hello world\n");
}

四,编译
$ cd my_ext
$ /usr/local/php/bin/phpize
ps: 如果出现:Cannot find autoconf.……的错误信息,则需要安装 autoconf (安装过程略)
$ ./configure  --with-php-config=/usr/local/php/bin/php-config
$ make

这时会编译出 my_ext/modules/my_ext.so

五,配置php.ini
将my_ext.so放入/usr/local/php/ext/目录

$ vi php.ini

修改添加如下:
extension_dir = '/usr/local/php/ext/'
extension=my_ext.so  

六,测试
$ vi test.php
<?php
   say_hello();
?>

$ /usr/local/php/bin/php test.php
hello world.

则大功告成

ps:如有问题请留言,大家共同探讨

PHP 相关文章推荐
PHP自动生成月历代码
Oct 09 PHP
mysql 搜索之简单应用
Apr 27 PHP
php对gzip文件或者字符串解压实例参考
Jul 25 PHP
用php实现的下载css文件中的图片的代码
Feb 08 PHP
php文章内容分页并生成相应的htm静态页面代码
Jun 07 PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
Aug 22 PHP
简单的php数据库操作类代码(增,删,改,查)
Apr 08 PHP
九个你必须知道而且又很好用的php函数和特点
Aug 08 PHP
PHP中Memcache操作类及用法实例
Dec 12 PHP
PHP实现的一致性哈希算法完整实例
Nov 14 PHP
PHP中in_array函数使用的问题与解决办法
Sep 11 PHP
Laravel基础-关于引入公共文件的两种方式
Oct 18 PHP
php 文件状态缓存带来的问题
Dec 14 #PHP
快速开发一个PHP扩展图文教程
Dec 12 #PHP
PHP Google的translate API代码
Dec 10 #PHP
php escape URL编码
Dec 10 #PHP
php 破解防盗链图片函数
Dec 09 #PHP
中英文字符串翻转函数
Dec 09 #PHP
php2html php生成静态页函数
Dec 08 #PHP
You might like
php下使用以下代码连接并测试
2008/04/09 PHP
js+php实现静态页面实时调用用户登陆状态的方法
2015/01/04 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
jquery 指南/入门基础
2007/11/30 Javascript
Javascript Object.extend
2010/05/18 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
2014/10/11 Javascript
jquery获取当前元素索引值用法实例
2015/06/10 Javascript
第九篇Bootstrap导航菜单创建步骤详解
2016/06/21 Javascript
浅析上传头像示例及其注意事项
2016/12/14 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
vue.js 上传图片实例代码
2017/06/22 Javascript
使用JS中的Replace()方法遇到的问题小结
2017/10/20 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
Vue实现导航栏的显示开关控制
2019/11/01 Javascript
JS Thunk 函数的含义和用法实例总结
2020/04/08 Javascript
Python生成pdf文件的方法
2014/08/04 Python
零基础写python爬虫之使用Scrapy框架编写爬虫
2014/11/07 Python
给Python IDLE加上自动补全和历史功能
2014/11/30 Python
Python设计模式之建造者模式实例详解
2019/01/17 Python
pytorch打印网络结构的实例
2019/08/19 Python
python将数据插入数据库的代码分享
2020/08/16 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
2020/10/15 Python
django inspectdb 操作已有数据库数据的使用步骤
2021/02/07 Python
澳大利亚领先的睡衣品牌:Peter Alexander
2016/08/16 全球购物
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
员工年终演讲稿
2014/01/03 职场文书
促销活动策划方案
2014/01/12 职场文书
公休请假条
2014/04/11 职场文书
保密协议书范本
2014/04/22 职场文书
护士长竞聘演讲稿
2014/04/30 职场文书
财政局党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
工程主管竞聘书
2015/09/15 职场文书
浅谈Nginx 中的两种限流方式
2021/03/31 Servers
如何利用JavaScript实现二叉搜索树
2021/04/02 Javascript
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python