linux下 C语言对 php 扩展

 2025-01-15  阅读 325  评论 8  点赞 228

摘要:一,搭建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
一,搭建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:如有问题请留言,大家共同探讨

标签:phpphp教程

评论列表:

  •   tg2087002654
     发布于 2天前回复该评论
  • 写的很不错,学到了!
显示更多评论

发表评论:

管理员

承接各种程序开发,外贸网站代运营,外贸网站建设等项目
  • 内容2460
  • 积分67666
  • 金币86666

Copyright © 2024 LS'Blog-保定PHP程序员老宋个人博客 Inc. 保留所有权利。 Powered by LS'blog 3.0.3

页面耗时0.0282秒, 内存占用1.94 MB, 访问数据库30次

冀ICP备19034377号