linux下php擴充套件 phpext 開發記錄

2021-05-24 05:54:51 字數 2897 閱讀 6776

公司需要對通行證使用者資料的教檢函式封包(防止伺服器淪陷,使用者資料被解密),需要開發乙個擴充套件函式,

username是cookie中的username,

hashkey 是 cookie中的 pname

開發php ext: 函式名為csdn_verify_auth,引數是username 和 hashkey ,(演算法機密檔案略)

第一次寫php擴充套件,搜尋資料到編寫測試用了一天半完成,記錄一下吧,以後如果需要做的話大部分時間只能浪費在c演算法上。

1.先down乙個php下來,編譯安裝:(編譯環境只做測試擴充套件用)

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 = /* must be the last line in php5cpp_functions */ };

更改為zend_function_entry php5cpp_functions = /* must be the last line in php5cpp_functions */ };

在最後新增:

php_function(csdn_verify_auth)

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語言,走到哪都不怕。

linux下安裝php擴充套件

記錄一下在lnmp環境中安裝php的pdo和pdo mysql 擴充套件我的用lnmp一鍵安裝包安裝了php5.6版本,現在需要安裝pdo擴充套件。在網上看了按照乙個部落格的說明安裝成功了,所以記錄一下。擴充套件檔案 在lnmp壓縮檔案 src php5.6.22 ext資料夾中有各種常用的擴充套件...

Linux下編寫php擴充套件

linux下編寫php擴充套件 1 所需 phpize 如果一開始是使用原始碼編譯裡面就有 php原始碼 2 到原始碼目錄下ext目錄裡面,執行.ext skel extname myext 3 生成擴充套件框架後,需要進入裡面修改m4檔案,php arg enable myext,whether ...

Linux下php新增新擴充套件

今天幹了一件很嚴重的錯事,用tp開發完新專案後,傳到伺服器上報錯,網上查了一下,說未載入pdo,就載入吧。找到配置檔案php.ini,搜到 extension php pdo mysql.dll,去掉前面的注釋,重啟伺服器,看似一切正常,卻大錯特錯。linux下應該是.so,而不是.dll,php原...