Linux下C语言对php的扩展_PHP

2023-10-08 08:36
1、搭建PHP环境
下载PHP 5.2.6源码并解压
编译安装、搭建PHP环境

2、创建扩展项目

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

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

根据你自己的选择将

dnl PHP_ARG_WITH(my_ext, for my_ext support,
dnl 确保注释对齐:

dnl [  --with -my_ext             包括 my_ext 支持])
修改成

PHP_ARG_WITH(my_ext, 对于 my_ext 支持,
确保注释对齐:

[  --with-my_ext             包括 my_ext分机支持])
或者将

dnl PHP_ARG_ENABLE(my_ext,是否启用my_ext支持,
dnl确保注释对齐:

dnl [  --enable-my_ext           启用my_ext支持])
修改成

PHP_ARG_ENABLE(my_ext,是否启用my_ext支持,

确保注释对齐:
[  --enable-my_ext           启用my_ext支持])

$ vi ext/my_ext/php_my_ext.h


PHP_FUNCTION(confirm_my_ext_compiled); /* 为了测试,稍后删除。 */
更改为
PHP_FUNCTION(say_hello);


$ vi ext/my_ext/my_ext.c


zend_function_entry php5cpp_functions[] = {
        PHP_FE(confirm_my_ext_compiled, NULL) /* 用于测试,稍后删除。 */
{NULL, NULL, NULL} /* 必须是 php5cpp_functions[] 中的最后一行 ZEND_FUNCTION_ENTRY PHP5CPP_FUNCTIONS [] = {
php_fe (say_hello, null) {null, null, null} /* 最后一行php5cpp_functions [] * / * / * / * /

};在末尾添加: ? php/bin/ phpize
ps:如果出现错误信息:Cannot find autoconf...,则需要安装autoconf(安装过程略)
$ ./configure --with-php-config= /usr/local/php/ bin/php-config
$ make

My_ext/modules/my_m.gsm-guard.net 此时会被编译

五、配置php.ini
将my_m.gsm-guard.net放入/usr/local/php/ ext/目录

$ vi php.ini

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

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

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

那么就完成了

ps:如果有什么问题请留言,我们一起讨论。