Попытка написать расширение для PHP (PHP extension)
Для компиляции расширения использовал утилиту phpize.
  Если у Вас при вводе
  # phpize
  
  Выдается:
  -bash:  phpize: command not found
  
  или:
  Can't find  PHP headers in /usr/include/php
  The php-devel package is required for use of this command.
  
  Это значит, что утилита не установлена. 
  
  phpize идет вместе с комплектом php-devel, который и нужно установить, чтобы данная  утилита стала для Вас доступной.
  
  
  Debian (или ubuntu):
| $ sudo aptitude install php5-dev | 
CentOS (или RedHat):
| $ sudo yum install php-devel | 
| $ sudo yum install php53-devel | 
    
Далее нужно создать директорию с тремя файлами.
- 
Конфигурационный файл (config.m4)
- этот файл используемый утилитой phpize для подготовки расширения к компиляции:
 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 
 
- 
  Заголовочный файл (php_hello.h), содержащий указания, используемые PHP для загрузки расширений:
 #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 
 
- файл с исходниками (hello.c), содержащий тело функции hello_world:
 #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); } 
 
Теперь нужно скомпилировать расширение:
| 1 | $ phpize
$ ./configure --enable-hello
$ make | 
Далее нужно поместить файл расширения в предназначенную для этого директорию.
Если Вы не знаете расположение этой папки (или папок), то можно запустить phpinfo() и посмотреть значение директивы extension_dir 
Пример использования расширения из php скрипта:
| dl('hello.so'); echo hello_world().'<br>'; |