IT猫扑网:您身边最放心的安全下载站! 最新更新|软件分类|软件专题|手机版|论坛转贴|软件发布

您当前所在位置:首页网络编程PHP编程 → linux下php扩展(php ext)开发记录

linux下php扩展(php ext)开发记录

时间:2015/6/28来源:IT猫扑网作者:网管联盟我要评论(0)

  公司需要对通行证用户资料的教检函数封包(防止服务器沦陷,用户资料被解密),需要开发一个扩展函数,

  username是cookie中的username,

  hashkey 是 cookie中的 PName

  开发php ext: 函数名为csdn_verify_auth,参数是username 和 hashkey ,(算法机密文件略)

  第一次写PHP扩展,搜索资料到编写测试用了一天半完成,记录一下吧,以后如果需要做的话大部分时间只能浪费在C算法上。

  1.先down一个php下来,编译安装:(编译环境只做测试扩展用)

  wget https://cn2.php.net/get/php-5.2.13.tar.gz/from/cn.php.net/mirror

  tar zxvf php-5.2.13.tar.gz

  cd php-5.2.13

  ./configure --prefix=/csdn_verify_auth/php --with-config-file-path=/csdn_verify_auth/php/etc

  make ZEND_EXTRA_LIBS='-liconv'

  make install

  cp php.ini-dist /csdn_verify_auth/php/etc/php.ini

  2.修改一下vi /csdn_verify_auth/php/etc/php.ini中的extension_dir = "./"

  修改为extension_dir = "/csdn_verify_auth/php/lib/php/extensions/no-debug-non-zts-20060613"

  并在此行后增加以下,然后保存:

  extension = "csdn_verify_auth.so"

  csdn_verify_auth改为你开发的扩展的名字

  3.开始创建扩展项目

  进入源码目录

  cd /csdn_verify_auth/php-5.2.13/ext/

  ./ext_skel --extname=csdn_verify_auth

  创建名字为csdn_verify_auth的项目,最终会生成csdn_verify_auth.so

  4.更改配置和扩展程序开发

  vi ext/csdn_verify_auth/config.m4

  根据你自己的选择将

  dnl PHP_ARG_WITH(csdn_verify_auth, for csdn_verify_auth support,

  dnl Make sure that the comment is aligned:

  dnl [ --with-csdn_verify_auth Include csdn_verify_auth support])

  去掉dnl

  或者将

  dnl PHP_ARG_ENABLE(csdn_verify_auth, whether to enable csdn_verify_auth support,

  dnl Make sure that the comment is aligned:

  dnl [ --enable-csdn_verify_auth Enable csdn_verify_auth support])

  去掉dnl

  vi ext/csdn_verify_auth/php_csdn_verify_auth.h

  将

  PHP_FUNCTION(confirm_csdn_verify_auth_compiled); /* For testing, remove later. */

  更改为

  PHP_FUNCTION(csdn_verify_auth);

  vi ext/csdn_verify_auth/csdn_verify_auth.c

  将

  zend_function_entry php5cpp_functions[] = {

  PHP_FE(confirm_csdn_verify_auth_compiled, NULL) /* For testing, remove later. */

  {NULL, NULL, NULL} /* Must be the last line in php5cpp_functions[] */

  };

  更改为

  zend_function_entry php5cpp_functions[] = {

  PHP_FE(csdn_verify_auth, NULL)

  {NULL, NULL, NULL} /* Must be the last line in php5cpp_functions[] */

  };

  在最后添加:

  PHP_FUNCTION(csdn_verify_auth)

  {

  zend_printf("hello world\n");

  }

  5.编译生成so文件

  cd /csdn_verify_auth/php-5.2.13/ext/csdn_verify_auth/

  /csdn_verify_auth/php/bin/phpize

  ./configure --with-php-config=/csdn_verify_auth/php/bin/php-config

  make

  mv /csdn_verify_auth/php-5.2.13/ext/csdn_verify_auth/modules/csdn_verify_auth.so /csdn_verify_auth/php/lib/php/extensions/no-debug-non-zts-20060613

  cd ../../../

  6.测试扩展

  vi /csdn_verify_auth/hello.php

  csdn_verify_auth();

  ?>

  /csdn_verify_auth/php/bin/php hello.php

  hello world.

  OK

  主要用到的api就那么几个:

  ZEND_NUM_ARGS()、zend_parse_parameters(args TSRMLS_CC, "ss", &username, &username_length, &hash, &hash_length) 参数接收系列

  RETURN_FALSE。。RETURN_STRINGL(s, l, dup)等返回系列函数

  …………………

  其他的基本就是C了,再次感叹下,学好C语言,走到哪都不怕。

关键词标签:php扩展

相关阅读

文章评论
发表评论

热门文章 plsql developer怎么连接数据库-plsql deveplsql developer怎么连接数据库-plsql deve2021年最好用的10款php开发工具推荐2021年最好用的10款php开发工具推荐在 PHP 中使用命令行工具在 PHP 中使用命令行工具php应用程序安全防范技术研究php应用程序安全防范技术研究

相关下载

人气排行 详解ucenter原理及第三方应用程序整合思路、方法PHP中防止SQL注入攻击PHP会话Session的具体使用方法解析PHP运行出现Notice : Use of undefined constant 的解决办法CakePHP程序员必须知道的21条技巧PHP如何清空mySQL数据库PHP采集图片实例(PHP采集)plsql developer怎么连接数据库-plsql developer连接数据库方法