PHP Extension

from http://blog.ring.idv.tw/comment.ser?i=210


Hello World的PHP Extension。
hello.c
#include "php.h"

ZEND_FUNCTION(hello);
zend_function_entry hellomodule_functions[] =
{
    ZEND_FE(hello, NULL)
    {NULL, NULL, NULL}
};
zend_module_entry hellomodule_module_entry =
{
    STANDARD_MODULE_HEADER,
    "Hello Module",
    hellomodule_functions,
    NULL, 
    NULL, 
    NULL, 
    NULL, 
    NULL,
    NO_VERSION_YET,
    STANDARD_MODULE_PROPERTIES
};

#if COMPILE_DL_FIRST_MODULE
ZEND_GET_MODULE(hellomodule)
#endif

ZEND_FUNCTION(hello)
{
 RETURN_STRING("HELLO WORLD",1);
}


apt-get install php5-dev

Compiling
先進行編譯處理~
gcc -fpic -DCOMPILE_DL_FIRST_MODULE=1 -I/usr/local/include -I. -I/usr/include/php5 -I/usr/include/php5/Zend -I/usr/include/php5//main -I/usr/include/php5/TSRM -c -o hello.o hello.c
Linking
然後產生一個Shared Object~
gcc -shared -L/usr/local/lib -rdynamic -o hello.so hello.o
掛上hello module
cp hello.so /usr/lib/php5/20060613+lfs/
修改「php.ini」,加上「extension=hello.so]~ 然後重新啟動您的Apache Server
vi /etc/php5/apache2/php.ini
/etc/init.d/apache2 restart
最後用「phpinfo()」來驗證是否已掛上自己的Extension~ 成功的話會看到下圖:
測試HelloWorld
<?php
echo hello();
?>
看到畫面出現「HELLO WORLD」就成功啦! ^^

留言

熱門文章