Linux下C语言对PHP扩展Linux认证考试
文章作者 100test 发表时间 2010:02:10 19:01:23
来源 100Test.Com百考试题网
    
	
  一,搭建php环境
  下载php 5.2.6 源码 并解压
  编译安装,搭建php环境
  二,创建扩展项目
  进入源码目录
  cd php5.2.6/ext/
  ./ext_skel --extname=my_ext
  创建名字为my_ext的项目,最终会生成my_ext.so
  三,更改配置和程序
  $ vi ext/my_ext/config.m4
  根据你自己的选择将
  dnl PHP_ARG_WITH(my_ext, for my_ext support,
  dnl Make sure that the comment is aligned:
  dnl [ --with-my_ext Include my_ext support])
  修改成
  PHP_ARG_WITH(my_ext, for my_ext support,
  Make sure that the comment is aligned:
  [ --with-my_ext Include my_ext support])
  或者将
  dnl PHP_ARG_ENABLE(my_ext, whether to enable my_ext support,
  dnl Make sure that the comment is aligned:
  dnl [ --enable-my_ext Enable my_ext support])
  修改成
  PHP_ARG_ENABLE(my_ext, whether to enable my_ext support,
  Make sure that the comment is aligned:
  [ --enable-my_ext Enable my_ext support])
  $ vi ext/my_ext/php_my_ext.h
  将
  PHP_FUNCTION(confirm_my_ext_compiled). /* For testing, remove later. */
  更改为
  PHP_FUNCTION(say_hello).
  $ vi ext/my_ext/my_ext.c
  将
  zend_function_entry php5cpp_functions[] = {
  PHP_FE(confirm_my_ext_compiled, NULL) /* For testing, remove later. */
  {NULL, NULL, NULL} /* Must be the last line in php5cpp_functions[] */
  }.
  更改为
  zend_function_entry php5cpp_functions[] = {
  PHP_FE(say_hello, NULL)
  {NULL, NULL, NULL} /* Must be the last line in php5cpp_functions[] */
  }.
  在最后添加:
  PHP_FUNCTION(say_hello)
  {
  zend_printf("hello world\n").
  }
  四,编译
  $ cd my_ext
  $ /usr/local/php/bin/phpize
  ps: 如果出现:Cannot find autoconf.……的错误信息,则需要安装 autoconf (安装过程略)
  $ ./configure --with-php-config=/usr/local/php/bin/php-config
  $ make
  这时会编译出 my_ext/modules/my_ext.so
  五,配置php.ini
  将my_ext.so放入/usr/local/php/ext/目录
  $ vi php.ini
  修改添加如下:
  extension_dir =  /usr/local/php/ext/ 
  extension=my_ext.so
  六,测试
  $ vi test.php