PHP Conference Japan 2024

安裝

使用 PECL 安裝 MongoDB PHP 擴充

關於安裝此 PECL 擴充的資訊,請參閱標題為PECL 擴充安裝的手冊章節。其他資訊,如新版本、下載、原始碼檔案、維護者資訊和變更記錄,可以在這裡找到:» https://pecl.php.net/package/mongodb

Linux、Unix 和 macOS 使用者可以執行以下命令來安裝擴充

$ sudo pecl install mongodb

在安裝了多個 PHP 版本的系統上(例如 macOS 預設值、Homebrew、» XAMPP),每個 PHP 版本都會有自己的 pecl 命令和 php.ini 檔案。此外,每個 PHP 環境(例如 CLI、Web)可能會使用不同的 php.ini 檔案。

從擴充版本 1.17.0 開始,PECL 會提示各種 configure 選項。若要在非互動式腳本中以預設選項安裝擴充,可以使用 yes 命令將空字串輸入傳輸至 pecl install

$ yes '' | sudo pecl install mongodb

支援的 configure 選項的完整列表可以在 PECL 套件中包含的 package.xml 檔案中找到。若要在非互動式腳本中以特定 configure 選項安裝擴充,可以使用 pecl install--configureoptions 選項

$ sudo pecl install --configureoptions='with-mongodb-system-libs="yes" enable-mongodb-developer-flags="no"' mongodb

依預設,透過 PECL 安裝擴充會使用 » libbson» libmongoc» libmongocrypt 的捆綁版本,並嘗試自動設定它們。

注意如果建置過程找不到 SSL 程式庫,請檢查是否已安裝開發套件(例如 libssl-dev)和 » pkg-config。如果這樣無法解決問題,請考慮使用手動安裝過程。

最後,將以下行新增到每個需要使用擴充的環境的 php.ini 檔案中

extension=mongodb.so

在 macOS 上使用 Homebrew 安裝 MongoDB PHP 擴充

» Homebrew 1.5.0 已棄用 » Homebrew/php tap 並移除了個別 PHP 擴充的功能。今後,建議 macOS 使用者安裝 » php 公式,並使用 Homebrew PHP 安裝提供的 pecl 命令,遵循標準的PECL 安裝指示

在 Windows 上安裝 MongoDB PHP 擴充

預編譯的二進位檔會附加到專案的» Github 版本。發布的封存檔適用於 PHP 版本、執行緒安全(TS 或 NTS)和架構(x86 或 x64)的各種組合。確定 PHP 環境的正確封存檔,並將 php_mongodb.dll 檔案解壓縮到擴充目錄(預設為 "ext")。

將以下行新增到每個需要使用擴充的環境的 php.ini 檔案中

extension=php_mongodb.dll

如果未選取正確的二進位檔,則在執行階段嘗試載入擴充 DLL 時會發生錯誤

PHP Warning:  PHP Startup: Unable to load dynamic library 'mongodb'

請確保下載的 DLL 對應於以下 PHP 執行階段屬性

除了上述常數之外,也可以從 phpinfo() 推斷這些屬性。如果系統安裝了多個 PHP 執行階段,請仔細檢查 phpinfo() 輸出是否適用於正確的環境。

注意Windows 使用者的其他 DLL 相依性

為了使此擴充能夠運作,必須讓 Windows 系統 PATH 可以使用 DLL 檔案。如需有關如何執行此操作的資訊,請參閱標題為「如何在 Windows 上將我的 PHP 目錄新增至 PATH」的 FAQ。雖然將 DLL 檔案從 PHP 資料夾複製到 Windows 系統目錄也能運作(因為系統目錄預設位於系統的 PATH 中),但不建議這麼做。此擴充需要 PATH 中具有以下檔案: libsasl.dll

從原始碼建置 MongoDB PHP 驅動程式

對於對最新錯誤修正感興趣的開發人員和使用者,可以從 » Github 上的最新原始碼編譯擴充。執行以下命令來複製和建置專案

$ git clone https://github.com/mongodb/mongo-php-driver.git
$ cd mongo-php-driver
$ git submodule update --init
$ phpize
$ ./configure
$ make all
$ sudo make install

在安裝了多個 PHP 版本的系統上(例如 macOS 預設值、Homebrew、» XAMPP),每個 PHP 版本都會有自己的 phpize 命令和 php.ini 檔案。此外,每個 PHP 環境(例如 CLI、Web)可能會使用不同的 php.ini 檔案。

依預設,擴充會使用 » libbson» libmongoc» libmongocrypt 的捆綁版本,並嘗試自動設定它們。如果這些程式庫已安裝為系統程式庫,則擴充可以藉由指定 --with-mongodb-system-libs=yes 作為 configure 的選項來使用它們。

如需 configure 選項的完整列表,請執行 configure --help

當使用 libmongoc 和 libmongocrypt 的捆綁版本時,擴充也會嘗試根據 --with-mongodb-ssl configure 選項來選取 SSL 程式庫。從擴充版本 1.17.0 開始,預設一律優先使用 OpenSSL。先前,Secure Transport 是 macOS 上的預設值,而 OpenSSL 是所有其他平台上的預設值。

注意:

如果建置過程找不到 SSL 程式庫,請檢查是否已安裝開發套件(例如 libssl-dev)和 » pkg-config

在 macOS 上使用 Homebrew 時,系統通常會安裝多個版本的 OpenSSL。為了確保選取所需的 OpenSSL 版本,可以使用 PKG_CONFIG_PATH 環境變數來控制 pkg-config 的搜尋路徑。

最後的建置步驟 make install 會回報 mongodb.so 的安裝位置,類似於

Installing shared extensions:     /usr/lib/php/extensions/debug-non-zts-20220829/

請確保 php.ini 中的 extension_dir 選項指向 mongodb.so 的安裝目錄。可以執行下列命令來查詢該選項

$ php -i | grep extension_dir
  extension_dir => /usr/lib/php/extensions/debug-non-zts-20220829 =>
                   /usr/lib/php/extensions/debug-non-zts-20220829

如果目錄不同,請變更 php.ini 中的 extension_dir,或手動將 mongodb.so 移至正確的目錄。

最後,將以下行新增到每個需要使用擴充的環境的 php.ini 檔案中

extension=mongodb.so

新增註解

使用者貢獻的註解

此頁面沒有使用者貢獻的註解。
To Top