Reputation: 268
I am trying to create php extension.
Here is the config.m4 file
PHP_ARG_ENABLE(hello, whether to enable Hello
World support,
[ --enable-hello Enable Hello World support])
if test "$PHP_HELLO" = "yes"; then
AC_DEFINE(HAVE_HELLO, 1, [Whether you have Hello World])
PHP_NEW_EXTENSION(hello, hello.c, $ext_shared)
fi
Here is the php_hello.h file.
#ifndef PHP_HELLO_H
#define PHP_HELLO_H 1
#define PHP_HELLO_WORLD_VERSION "1.0"
#define PHP_HELLO_WORLD_EXTNAME "hello"
PHP_FUNCTION(hello_world);
extern zend_module_entry hello_module_entry;
#define phpext_hello_ptr &hello_module_entry
#endif
Here is the hello.c file
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "php.h"
#include "php_hello.h"
static function_entry hello_functions[] = {
PHP_FE(hello_world, NULL)
{NULL, NULL, NULL}
};
zend_module_entry hello_module_entry = {
#if ZEND_MODULE_API_NO >= 20010901
STANDARD_MODULE_HEADER,
#endif
PHP_HELLO_WORLD_EXTNAME,
hello_functions,
NULL,
NULL,
NULL,
NULL,
NULL,
#if ZEND_MODULE_API_NO >= 20010901
PHP_HELLO_WORLD_VERSION,
#endif
STANDARD_MODULE_PROPERTIES
};
#ifdef COMPILE_DL_HELLO
ZEND_GET_MODULE(hello)
#endif
PHP_FUNCTION(hello_world)
{
RETURN_STRING("Hello World", 1);
}
when I am building this using below commands-
$ phpize
$ ./configure --enable-hello
$ make
getting this error-
/usr/include/php/ext/hello/hello.c:8:5: warning: braces around scalar initializer [enabled by default]
/usr/include/php/ext/hello/hello.c:8:5: warning: (near initialization for 'hello_functions[0]') [enabled by default]
/usr/include/php/ext/hello/hello.c:8:5: warning: initialization makes integer from pointer without a cast [enabled by default]
/usr/include/php/ext/hello/hello.c:8:5: warning: (near initialization for 'hello_functions[0]') [enabled by default]
/usr/include/php/ext/hello/hello.c:8:5: error: initializer element is not computable at load time
/usr/include/php/ext/hello/hello.c:8:5: error: (near initialization for 'hello_functions[0]')
/usr/include/php/ext/hello/hello.c:8:5: warning: excess elements in scalar initializer [enabled by default]
/usr/include/php/ext/hello/hello.c:8:5: warning: (near initialization for 'hello_functions[0]') [enabled by default]
/usr/include/php/ext/hello/hello.c:8:5: warning: excess elements in scalar initializer [enabled by default]
/usr/include/php/ext/hello/hello.c:8:5: warning: (near initialization for 'hello_functions[0]') [enabled by default]
/usr/include/php/ext/hello/hello.c:8:5: warning: excess elements in scalar initializer [enabled by default]
/usr/include/php/ext/hello/hello.c:8:5: warning: (near initialization for 'hello_functions[0]') [enabled by default]
/usr/include/php/ext/hello/hello.c:8:5: warning: excess elements in scalar initializer [enabled by default]
/usr/include/php/ext/hello/hello.c:8:5: warning: (near initialization for 'hello_functions[0]') [enabled by default]
/usr/include/php/ext/hello/hello.c:9:5: warning: braces around scalar initializer [enabled by default]
/usr/include/php/ext/hello/hello.c:9:5: warning: (near initialization for 'hello_functions[1]') [enabled by default]
/usr/include/php/ext/hello/hello.c:9:5: warning: initialization makes integer from pointer without a cast [enabled by default]
/usr/include/php/ext/hello/hello.c:9:5: warning: (near initialization for 'hello_functions[1]') [enabled by default]
/usr/include/php/ext/hello/hello.c:9:5: warning: excess elements in scalar initializer [enabled by default]
/usr/include/php/ext/hello/hello.c:9:5: warning: (near initialization for 'hello_functions[1]') [enabled by default]
/usr/include/php/ext/hello/hello.c:9:5: warning: excess elements in scalar initializer [enabled by default]
/usr/include/php/ext/hello/hello.c:9:5: warning: (near initialization for 'hello_functions[1]') [enabled by default]
/usr/include/php/ext/hello/hello.c:17:5: warning: initialization from incompatible pointer type [enabled by default]
/usr/include/php/ext/hello/hello.c:17:5: warning: (near initialization for 'hello_module_entry.functions') [enabled by default]
I am new to this, how do I solve this problem ?
Upvotes: 2
Views: 476
Reputation: 268
I got the solution. In hello.c file, I am using function_entry which doesn't work for php 5.4 or above. Use zend_function_entry in place of function_entry.
Upvotes: 7