日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP扩展-扩展的生成和编译

發(fā)布時間:2025/3/14 php 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP扩展-扩展的生成和编译 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首先說明一下,PHP擴展有兩種編譯方式:
方式一:在編譯PHP時直接將擴展編譯進去
方式二:擴展被編譯成.so文件,在php.ini里配置加載路徑;

以下開始說明創(chuàng)建PHP擴展并編譯的步驟:
下載PHP源碼,并解壓,在源碼的根目錄下開始操作,
1. 使用ext_skel生成擴展框架,如下:

? php-5.6.24 cd ~/Downloads/tmp/php-5.6.24 ? php-5.6.24 cd ext ? ext ./ext_skel --extname=myfirstext

?

ext_skel在執(zhí)行后,會提示開發(fā)者后續(xù)的操作步驟,這個操作步驟是擴展的兩種編譯方式里的方式一的步驟, 如下:

To use your new extension, you will have to execute the following steps:1. $ cd .. 2. $ vi ext/plogger/config.m4 3. $ ./buildconf 4. $ ./configure --[with|enable]-plogger 5. $ make 6. $ ./sapi/cli/php -f ext/plogger/plogger.php 7. $ vi ext/plogger/plogger.c 8. $ make

2. 修改文件ext/myfirstext/config.m4
重點看line10-18的代碼,用于設(shè)置./configure時啟用此擴展的命令選項,將其中l(wèi)ine16和line18的dnl刪掉,把dnl理解為注釋符。

14 dnl Otherwise use enable: 15 16 dnl PHP_ARG_ENABLE(myfirstext, whether to enable myfirstext support, 17 dnl Make sure that the comment is aligned: 18 dnl [ --enable-myfirstext Enable myfirstext support]) 19 20 if test "$PHP_MYFIRSTEXT" != "no"; then 21 dnl Write more examples of tests here...

以上兩步驟是公共的,以下將分別介紹編譯PHP擴展的兩種方式,
方式一:編譯PHP時直接將擴展編譯進去
3. 在源碼根目錄下執(zhí)行./buildconf,如下
4. 在源碼根目錄下執(zhí)行./configure –enable-myfirstext
為了減少編譯時間,可以在configure階段指明不編譯某些模塊,比如:

./configure --without-iconv --enable-debug --enable-myfirstext --disable-cgi --enable-cli --without-pear --disable-xml --without-mysql

5. 在源碼根目錄下執(zhí)行make
注意編譯成功后,別執(zhí)行make install了,因為至此,擴展myfirstext已經(jīng)編譯成功,并且已經(jīng)生成了相應(yīng)的php二進制文件了,它在./sapi/cli/php

方式二:擴展被編譯成.so文件,在php.ini里配置加載路徑
3. 在擴展目錄ext/myfirstext/下執(zhí)行phpize命令
4. 在擴展目錄ext/myfirstext/下執(zhí)行./configure –enable-myfirstext命令
5. 在擴展目錄ext/myfirstext/下執(zhí)行make
執(zhí)行make后會在ext/myfirstext/modules下生成對應(yīng)的.so文件,在php.ini中配置好加載此文件即可。

校驗擴展是否加載成功
執(zhí)行./sapi/cli/php -f ext/myfirstext/myfirstext.php
或者通過php -m列出所有擴展,查看是否有myfirstext, 執(zhí)行命令:./sapi/cli/php -m | grep myfirstext
通過以上校驗,說明擴展編譯成功了。但是到目前為止,還沒有編輯過c相關(guān)的代碼,一切都是ext_skel默認生成的,查看這個擴展myfirstext包含哪些函數(shù)呢?如下:

? php-5.6.24 ./sapi/cli/php -r 'print_r(get_extension_funcs("myfirstext"));'

OK, 目前為止熟悉了PHP擴展框架的生成,配置,和編譯。接下來就要往擴展myfirstext里添加一個自己的函數(shù)。

?

轉(zhuǎn)載于:https://www.cnblogs.com/beatzeus/p/6071883.html

總結(jié)

以上是生活随笔為你收集整理的PHP扩展-扩展的生成和编译的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。