亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3014 | 回復: 4
打印 上一主題 下一主題

linux下php擴展(php ext)開發(fā)記錄 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2012-01-06 10:59 |只看該作者 |倒序瀏覽
  公司需要對通行證用戶資料的教檢函數(shù)封包(防止服務(wù)器淪陷,用戶資料被解密),需要開發(fā)一個擴展函數(shù),

  username是cookie中的username,

  hashkey 是 cookie中的 PName

  開發(fā)php ext: 函數(shù)名為csdn_verify_auth,參數(shù)是username 和 hashkey ,(算法機密文件略)

  第一次寫PHP擴展,搜索資料到編寫測試用了一天半完成,記錄一下吧,以后如果需要做的話大部分時間只能浪費在C算法上。

  1.先down一個php下來,編譯安裝:(編譯環(huán)境只做測試擴展用)

  wget http://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改為你開發(fā)的擴展的名字

  3.開始創(chuàng)建擴展項目

  進入源碼目錄

  cd /csdn_verify_auth/php-5.2.13/ext/

  ./ext_skel --extname=csdn_verify_auth

  創(chuàng)建名字為csdn_verify_auth的項目,最終會生成csdn_verify_auth.so

  4.更改配置和擴展程序開發(fā)

  vi ext/csdn_verify_auth/config.m4

  根據(jù)你自己的選擇將

  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) 參數(shù)接收多級泵系列信息

  RETURN_FALSE。。RETURN_STRINGL(s, l, dup)等返回系列函數(shù)

  …………………

  其他的基本就是C了,再次感嘆下,學好C語言,走到哪都不怕。

論壇徽章:
0
2 [報告]
發(fā)表于 2012-01-06 11:21 |只看該作者
還不知道有什么結(jié)果!

論壇徽章:
0
3 [報告]
發(fā)表于 2012-01-06 11:30 |只看該作者
說什么呢,學習的時間早就過了啊,

論壇徽章:
0
4 [報告]
發(fā)表于 2012-01-06 12:28 |只看該作者
q 我無語---

論壇徽章:
0
5 [報告]
發(fā)表于 2012-01-23 23:14 |只看該作者
學習學習啊。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP