写一个 php zend扩展 例子
时间: 2024-01-24 16:05:14 浏览: 25
好的,以下是一个简单的 PHP Zend 扩展示例:
1. 创建扩展目录
首先,我们需要在 PHP 扩展目录中创建一个新目录来存储我们的扩展。可以使用以下命令:
```
mkdir /path/to/php/ext/myextension
```
2. 创建扩展文件
在扩展目录中创建一个名为 `myextension.c` 的新文件。将以下内容复制到文件中:
```c
#include "php_myextension.h"
PHP_FUNCTION(hello_world)
{
php_printf("Hello, world!\n");
}
static const zend_function_entry myextension_functions[] = {
PHP_FE(hello_world, NULL)
PHP_FE_END
};
zend_module_entry myextension_module_entry = {
STANDARD_MODULE_HEADER,
"MyExtension",
myextension_functions,
NULL,
NULL,
NULL,
NULL,
NULL,
"0.1",
STANDARD_MODULE_PROPERTIES
};
#ifdef COMPILE_DL_MYEXTENSION
ZEND_GET_MODULE(myextension)
#endif
```
3. 创建扩展头文件
在扩展目录中创建一个名为 `php_myextension.h` 的新文件。将以下内容复制到文件中:
```c
#ifndef PHP_MYEXTENSION_H
#define PHP_MYEXTENSION_H
#include "php.h"
extern zend_module_entry myextension_module_entry;
#define phpext_myextension_ptr &myextension_module_entry
#endif
```
4. 创建配置文件
在扩展目录中创建一个名为 `config.m4` 的新文件。将以下内容复制到文件中:
```m4
PHP_ARG_ENABLE(myextension, whether to enable MyExtension support,
[ --enable-myextension Enable MyExtension support])
if test $PHP_MYEXTENSION != "no"; then
PHP_REQUIRE_CXX()
PHP_SUBST(MYEXTENSION_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(mylibrary, /path/to/mylibrary/lib, MYEXTENSION_SHARED_LIBADD)
PHP_NEW_EXTENSION(myextension, myextension.c, $ext_shared)
fi
```
5. 编译和安装
使用以下命令来编译和安装扩展:
```
cd /path/to/php/ext/myextension
phpize
./configure --enable-myextension
make
sudo make install
```
6. 配置 php.ini
在 php.ini 文件中添加以下行:
```
extension=myextension.so
```
7. 测试扩展
使用以下 PHP 代码测试新扩展:
```php
<?php
hello_world();
?>
```
输出应该是:
```
Hello, world!
```