2024 年日本 PHP 研討會

使用 phpize 編譯共享 PECL 擴展

有時,使用 pecl 安裝程式並非可行選項。這可能是因為防火牆的緣故,或是因為要安裝的擴展並未以 PECL 相容套件提供,例如從 git 取得的未發布擴展。如果需要建置此類擴展,可以使用較低階的建置工具手動執行建置。

phpize 命令用於準備 PHP 擴展的建置環境。在以下範例中,擴展的原始碼位於名為 extname 的目錄中

$ cd extname
$ phpize
$ ./configure
$ make
# make install

安裝成功後,會建立 extname.so 並將其放置到 PHP 的 擴充目錄 中。您需要調整 php.ini 檔案,並在其中新增一行 extension=extname.so 才能使用該擴充功能。

如果系統缺少 phpize 指令,並且使用的是預先編譯的套件(例如 RPM),請務必安裝相對應的 PHP 開發版本套件,因為它們通常包含 phpize 指令以及建置 PHP 及其擴充功能所需的標頭檔。

執行 phpize --help 可以顯示更多使用資訊。

新增註解

使用者貢獻的註解 2 則註解

Brian
16 年前
如果您安裝了多個 PHP 版本,則可以在設定期間使用 --with-php-config 選項來指定要為哪個安裝版本建置擴充功能。

--with-php-config=[在此插入正確的 php-config 路徑]

例如(我的情況)
./configure --with-php-config=/usr/local/php5/bin/php-config5
admin at eexit dot net
12 年前
當為 64 位元(例如)堆疊編譯擴充功能,而您的編譯器設定為以 32 位元編譯時,您可以在設定之前使用 C 旗標手動編譯擴充功能。

範例:我的系統編譯器是 32 位元,而我的堆疊是 64 位元。要編譯我的 xdebug

# phpize
# CFLAGS=-m64 CPPFLAGS=-m64 CCASFLAGS=-m64 ./configure --enable-xdebug
# gmake
# file modules/xdebug.so
modules/xdebug.so: ELF 64-bit LSB dynamic lib AMD64 Version 1, dynamically linked, not stripped, no debugging information available(modules/xdebug.so:ELF 64 位元 LSB 動態連結程式庫 AMD64 版本 1,動態連結,未去除符號,沒有可用的除錯資訊)
To Top