php 源碼編譯 不加載擴(kuò)展獨(dú)立的PHP擴(kuò)展可以獨(dú)立于PHP源碼之外進(jìn)行分發(fā)?源碼編譯安裝php
2021-12-02
獨(dú)立的 PHP 擴(kuò)展可以獨(dú)立于 PHP 源代碼進(jìn)行分發(fā)。要?jiǎng)?chuàng)建這樣的擴(kuò)展,需要準(zhǔn)備兩件事:
接下來我們將描述如何創(chuàng)建這些文件并將它們組合起來。
準(zhǔn)備系統(tǒng)工具
如果想讓擴(kuò)展在系統(tǒng)上編譯運(yùn)行成功,需要準(zhǔn)備以下工具:
以上都可以從ftp:///pub/gnu/獲得。
注意:這些都是只能在類 Unix 環(huán)境中使用的工具。
改造現(xiàn)有的擴(kuò)展
為了表明創(chuàng)建獨(dú)立擴(kuò)展很容易,我們先將PHP 中嵌入的擴(kuò)展更改為獨(dú)立擴(kuò)展。安裝PHP并執(zhí)行以下命令:
$ /tmp/
$ cd /tmp/
現(xiàn)在你有一個(gè)空目錄。我們將復(fù)制擴(kuò)展目錄中的文件:
$ cp -rp php-4.0.X/ext//*.
#注:看來這篇文章真的需要更新了
# 擴(kuò)展部分已在 PHP7 中移除
至此,擴(kuò)展完成,執(zhí)行:
$
現(xiàn)在你可以在任何地方獨(dú)立存儲(chǔ)這個(gè)目錄中的文件,并且這個(gè)擴(kuò)展可以完全獨(dú)立存在。
用戶在編譯時(shí)需要使用以下命令:
$ ./
[--with-php-=/path/to/php-]
[--with-=-DIR]
$ make
這樣,模塊就可以使用內(nèi)置的客戶端庫(kù)或安裝在目錄中的。
注意:這意味著如果你想寫一個(gè)PHP擴(kuò)展,你需要已經(jīng)安裝了PHP,并且還需要下載一份PHP源代碼。
定義一個(gè)新的擴(kuò)展
我們將示例擴(kuò)展命名為“”。
新擴(kuò)展包含兩個(gè)資源文件:foo.c 和 bar.c(有一些頭文件,但這些不僅重要)。
示例擴(kuò)展不引用任何外部庫(kù)(這一點(diǎn)非常重要,因?yàn)橛脩舨恍枰付ㄒ恍┚幾g選項(xiàng))。
該選項(xiàng)用于指定資源文件的名稱,可以擁有任意數(shù)量的資源文件。
注:以上是.in文件中的配置選項(xiàng),可以參考。
修改m4后綴的配置文件
m4 配置文件可以指定一些額外的檢查。對(duì)于一個(gè)獨(dú)立的分機(jī),你只需要做一些宏調(diào)用。
(, 到,
[--- ])
如果測(cè)試 "$" != "no"; 然后
(, foo.c bar.c, $)
菲
自動(dòng)設(shè)置正確的變量以確保擴(kuò)展可以在共享模式下啟動(dòng)。
第一個(gè)參數(shù)是擴(kuò)展名,第二個(gè)參數(shù)是資源文件。第三個(gè)參數(shù) $ 由 /WITH 設(shè)置。
請(qǐng)始終使用或設(shè)置。即使您不打算發(fā)布您的 PHP 模塊php 源碼編譯 不加載擴(kuò)展,這些設(shè)置也可以確保您的模塊和 PHP 主模塊界面保持集成。
注意:and 應(yīng)該用于定義模塊是動(dòng)態(tài)擴(kuò)展還是靜態(tài)編譯成PHP,就像編譯PHP時(shí)使用的---xxx和--with-xxx一樣。
創(chuàng)建資源文件
您可以為 PHP 模塊創(chuàng)建一些通用代碼,也可以編寫一些基本的函數(shù)定義和 C 代碼來處理函數(shù)參數(shù)。具體信息可以查看..
不要擔(dān)心沒有例子。PHP 中有很多模塊供您參考。選擇一個(gè)簡(jiǎn)單的點(diǎn)開始并添加您自己的代碼。
注意:基礎(chǔ)模塊所需的資源文件和配置文件可以自行生成,不需要自己創(chuàng)建。
修改自定義模塊
將.m4文件和資源文件放在同一目錄下,然后執(zhí)行(編譯PHP時(shí)安裝PHP4.0及以上)。
如果你的不在系統(tǒng)環(huán)境變量中,則需要指定絕對(duì)路徑微信公眾號(hào)開發(fā),例如:
$ /php/bin/
此命令會(huì)自動(dòng)將必要的構(gòu)建文件復(fù)制到當(dāng)前目錄并創(chuàng)建基于 .m4 的配置文件。
通過以上步驟,你就擁有了一個(gè)獨(dú)立的分機(jī)。
安裝擴(kuò)展
可以使用以下命令編譯和安裝擴(kuò)展:
$ ./
[--with-php-=/path/to/php-]
$ make
為模塊添加共享支持
有時(shí)獨(dú)立的擴(kuò)展需要被其他模塊共享和加載。接下來,我將解釋如何為已經(jīng)創(chuàng)建的 foo 模塊添加共享支持。
在.m4文件中,使用/設(shè)置擴(kuò)展名,這樣就可以自動(dòng)使用 --with-foo=[,..] 或 ---foo=[,..] 等指令作為編譯參數(shù)。
在 .m4 文件中,使用 (foo,.., $) 啟用要構(gòu)建的擴(kuò)展。
將以下代碼添加到您的 C 語言資源文件中:
#
(富)
#
我在本段中已經(jīng)提到了上述所有內(nèi)容,但我再次強(qiáng)調(diào)一下。
PECL網(wǎng)站公約
如果您計(jì)劃將您的擴(kuò)展發(fā)布到 PECL 的網(wǎng)站,您需要考慮以下幾點(diǎn):
添加 或 到 .xml
版本信息需要在擴(kuò)展頭文件中定義,會(huì)調(diào)用這個(gè)宏來聲明擴(kuò)展版本:
# "1.2.3"
【編輯推薦】
PHP7 發(fā)布推遲待定。PHP7 正式版將作為開源發(fā)布。放棄PHPphp 源碼編譯 不加載擴(kuò)展,轉(zhuǎn)向PHP7發(fā)布時(shí)編寫的配置和使用教程。15 個(gè)有用的 PHP 正則表達(dá)式 如何編寫高性能代碼?
【主編:電話:(010)】