歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux下C語言對PHP擴展

Linux下C語言對PHP擴展

日期:2017/2/28 16:39:26   编辑:Linux教程

  一,搭建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

  <?php

  say_hello();

  ?>

  $ /usr/local/php/bin/php test.php

  hello world.

  則大功告成

Copyright © Linux教程網 All Rights Reserved