在 Linux 上編譯

要在典型的 Linux 環境中編譯 PHP 擴充套件,有一些先決條件:

  • 基本的 Unix 技能(能夠操作 make 和 C 編譯器)
  • ANSI C 編譯器
  • 要編譯的 PHP 擴充套件的原始碼

通常,有兩種方法可以編譯 PHP 擴充套件。你可以將擴充套件靜態編譯為 PHP 二進位制檔案,或者將其編譯為啟動時由 PHP 二進位制檔案載入的共享模組。共享模組更有可能,因為它們允許你新增或刪除擴充套件而無需重建整個 PHP 二進位制檔案。此示例重點介紹共享選項。

如果你通過軟體包管理器(apt-get installyum install 等)安裝了 PHP,則需要安裝 PHP 的 -dev 軟體包,其中包含必要的 PHP 標頭檔案和 phpize 指令碼,以便構建環境正常工作。該軟體包的名稱可能類似於 php5-devphp7-dev,但請確保使用你的軟體包管理器使用你的發行版儲存庫搜尋相應的名稱。它們可以不同。

如果你從原始碼構建 PHP,則系統中最有可能存在的標頭檔案( 通常/usr/include/usr/local/include 中)。

編譯的步驟

在檢查以確保你具備編譯所需的所有先決條件後,你可以前往 pecl.php.net ,選擇要編譯的擴充套件,並下載 tar 球。

  1. 開啟焦油球(例如 tar xfvz yaml-2.0.0RC8.tgz
  2. 輸入解壓縮存檔的目錄並執行 phpize
  3. 你現在應該看到一個新建立的 .configure 指令碼,如果一切順利,執行 ./configure
  4. 現在你需要執行 make,它將編譯擴充套件
  5. 最後,make install 會將編譯的擴充套件二進位制檔案複製到你的擴充套件目錄

make install 步驟通常會為你提供複製擴充套件的安裝路徑。這通常是/usr/lib/,例如它可能像/usr/lib/php5/20131226/yaml.so。但這取決於你的 PHP 配置(即 --with-prefix)和特定的 API 版本。API 編號包含在路徑中,以便在不同位置保留為不同 API 版本構建的擴充套件。

在 PHP 中載入擴充套件

要在 PHP 中載入擴充套件,請找到適合的 SAPI 載入的 php.ini 檔案,然後新增 extension=yaml.so 行,然後重新啟動 PHP。當然,將 yaml.so 更改為你安裝的實際副檔名。

對於 Zend 擴充套件,你需要提供共享物件檔案的完整路徑。但是,對於普通的 PHP 擴充套件,此路徑來自載入配置中的 extension_dir 指令,或者在初始設定期間從 $PATH 環境派生。