PHP的擴充套件模組的試用筆記(1)

2021-04-17 15:57:23 字數 2236 閱讀 2794

目前準備做的東西,選擇了apache2+php5來做開發平台,主要是看中了php的可以用c寫擴充套件模組的優勢。

在網上找了兩篇教程

相互參照,終於算是搞明白點了

php的擴充套件可分為三種:

(1)c寫共享庫,然後使用dl()來裝載,然後呼叫

(2)編譯進php,然後直接呼叫

(3)在zend裡面實現

實驗了第一種與第二種方法,第三種目前還沒測試

第一種與第二種的的開發步驟開始階段差不多

以$php_src表示php原始碼包的起始目錄

(1)# cd $php_src/ext

(2)$php_src/ext# ./ext_skel --extname=ur_php_module

這一步生成目錄 $php_src/ext/ur_php_module目錄,裡面的主要檔案有 config.m4 config.w32 .cvsignore ur_php_module.c php_ur_php_module.h這幾個檔案

(3)修改config.m4,確定是使用--with-***還是--enable-***的語法

4)在php_ur_php_module.h中增加自己的函式宣告

php_function(ur_func);

(5)在ur_php_module.c中先定義函式入口

zend_function_entry ur_php_module_functions =       /* must be the last line in dwb_mail_functions */

};然後下面新增ur_func的具體定義

php_function(ur_func)

好了,如果想要使用共享擴充套件,那麼

第一步:你手工可以編譯ur_php_module.c生成.so檔案

gcc -fpic -dcompile_dl_ur_php_module=1 -i/usr/local/include -i. -i../main -i.. -i../tsrm -i../zend -c -o ur_php_module/ur_php_module.o ur_php_module/ur_php_module.c

gcc -shared -l/usr/local/lib -rdynamic -o ur_php_module/ur_php_module.so ur_php_module/ur_php_module.o

這種方法可以更靈活,能夠自己新增任意需要的其他庫檔案。

還可以在按照以下步驟來生成so檔案

(1)$php_src/ext/ur_php_module# ./phpize

(2)$php_src/ext/ur_php_module# ./buildconf --force

生成配置檔案

(3)$php_src/ext/ur_php_module# ./configure [--enable|--with]-ur_php_module

(4)make

,編譯成功後,會在當前目錄下發現有modules目錄,裡面有編譯出來的.so檔案

第二步:把.so檔案copy到php.ini的extension_dir指定的目錄中,如果你不想在php頁面中每次使用自定義的方法都事先dl()一下,那麼你可以在下面加上一行

extension=ur_php_module.so

如果你想使用靜態擴充套件,

那麼你需要回到$php_src目錄,

(1)$php_src# ./buildconf --force

生成配置檔案

(3)$php_src# ./configure [--enable|--with]-ur_php_module --with-apxs2=/usr/local/apache2/bin/apxs

(4)make clean

(5)make

(6)make install

然後重啟apache

如果配置成功,怎在phpinfo()裡就會顯示我們自己的模組來,

ur_php_module

ur_php_module support enabled

在php頁面裡就可以直接呼叫你自己的函式了。

需要注意到是,如果你重新編譯、安裝php話最好先執行make clean一下,否則可能部分檔案不會被重新編譯,導致擴充套件模組無效。

PHP擴充套件外掛程式imagick使用筆記

php擴充套件外掛程式imagemagick使用筆記 imagick是乙個php的擴充套件,用imagemagick提供的api來進行的建立與修改,不過這些操作已經包裝到擴充套件imagick中去了,最終呼叫的是imagemagick提供的api imagemagick是一套軟體系列,主要用於的建立...

php 的rabbitmq 擴充套件模組amqp安裝

使用php開發,要使用中間佇列rabbitmq,必須要安裝php的擴充套件模組amqp,伺服器的環境是php7.1.18 centos 6.8,nginx 1.8 使用php的pecl命令 usr local php bin pecl install amqp 安裝amqp 一直報如下錯 check...

php下擴充套件模組的配置

版本 php4.43 已經內建有php curl.dll,在ext目錄下,此dll用於支援ssl和zlib.在php.ini中找到有extension php curl.dll,去掉前面的注釋.設定extension dir是正確的但重啟apahce老是報錯,說找不到動態鏈結庫,解決辦法 最後把li...