目前準備做的東西,選擇了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...