+
95
-

回答

我将描述如何通过五个步骤构建“Hello World”PHP扩展。

基于 Debian 的操作系统是必需的,因为我们需要使用 apt-get 获取一些工具和依赖项。步骤 1 - 设置构建环境/要求PHP 扩展是编译的 C 代码。我们需要一个 shell(应该已经安装)、一个编辑器(你的选择)、一个编译器(这里我们将使用 GCC)、PHP 本身和 PHP 开发依赖项。

sudo apt-get install build-essential php7.0 php7.0-dev

步骤 2 - 配置我们需要在基本配置文件中描述我们的扩展和形成它的文件:文件:config.m4
PHP_ARG_ENABLE(php_helloworld, Whether to enable the HelloWorldPHP extension, [ --enable-helloworld-php Enable HelloWorldPHP])

if test "$PHP_HELLOWORLD" != "no"; then
    PHP_NEW_EXTENSION(php_helloworld, php_helloworld.c, $ext_shared)
fi
如您所见,该NEW_EXTENSION包含一个 C 文件:。php_helloworld.c第 3 步 - 代码让我们为扩展创建 C 代码。首先,我们创建一个头文件:php_helloworld.h

PHP_ARG_ENABLE(php_helloworld, Whether to enable the HelloWorldPHP extension, [ --enable-helloworld-php Enable HelloWorldPHP])

if test "$PHP_HELLOWORLD" != "no"; then
    PHP_NEW_EXTENSION(php_helloworld, php_helloworld.c, $ext_shared)
fi
其次,我们创建源文件:php_helloworld.c
// include the PHP API itself
#include <php.h>
// then include the header of your extension
#include "php_helloworld.h"

// register our function to the PHP API 
// so that PHP knows, which functions are in this module
zend_function_entry helloworld_php_functions[] = {
    PHP_FE(helloworld_php, NULL)
    {NULL, NULL, NULL}
};

// some pieces of information about our module
zend_module_entry helloworld_php_module_entry = {
    STANDARD_MODULE_HEADER,
    PHP_HELLOWORLD_EXTNAME,
    helloworld_php_functions,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    PHP_HELLOWORLD_VERSION,
    STANDARD_MODULE_PROPERTIES
};

// use a macro to output additional C code, to make ext dynamically loadable
ZEND_GET_MODULE(helloworld_php)

// Finally, we implement our "Hello World" function
// this function will be made available to PHP
// and prints to PHP stdout using printf
PHP_FUNCTION(helloworld_php) {
    php_printf("Hello World! (from our extension)\n");
}

步骤 4 - 构建现在,我们已准备好构建扩展。首先,我们为 PHP 扩展准备构建环境:

phpize

然后我们配置构建并启用我们的扩展:

./configure --enable-php-helloworld

最后,我们可以构建它:make

sudo make install

步骤 5 - 测试为了测试我们的 PHP 扩展,让我们加载扩展文件并执行我们的函数:helloworld_php.sohelloworld_php()php -d extension=php_helloworld.so -r 'helloworld_php();'

网友回复

我知道答案,我要回答