關於安裝此 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
» Homebrew 1.5.0 已棄用 » Homebrew/php tap 並移除了個別 PHP 擴充的功能。今後,建議 macOS 使用者安裝 » php 公式,並使用 Homebrew PHP 安裝提供的 pecl 命令,遵循標準的PECL 安裝指示。
預編譯的二進位檔會附加到專案的» 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 執行階段屬性
PHP_VERSION
)PHP_ZTS
)PHP_INT_SIZE
)除了上述常數之外,也可以從 phpinfo() 推斷這些屬性。如果系統安裝了多個 PHP 執行階段,請仔細檢查 phpinfo() 輸出是否適用於正確的環境。
注意:Windows 使用者的其他 DLL 相依性
為了使此擴充能夠運作,必須讓 Windows 系統 PATH 可以使用 DLL 檔案。如需有關如何執行此操作的資訊,請參閱標題為「如何在 Windows 上將我的 PHP 目錄新增至 PATH」的 FAQ。雖然將 DLL 檔案從 PHP 資料夾複製到 Windows 系統目錄也能運作(因為系統目錄預設位於系統的 PATH 中),但不建議這麼做。此擴充需要 PATH 中具有以下檔案: libsasl.dll
對於對最新錯誤修正感興趣的開發人員和使用者,可以從 » 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