Windows 下安裝增加庫

在 Windows 下安裝完 PHP 和 web 伺服器之後,可能想要安裝一些增加庫來獲得更多功能。可以通過修改 php.ini 來選取當 PHP 啟動時加載哪些增加庫。也可以在腳本中通過使用 dl() 來動態加載。

PHP 增加庫的 DLL 檔案都具有 php_ 前綴。

很多增加庫都內建於 Windows 版的 PHP 之中。這意味著要加載這些增加庫不需要額外的 DLL 檔案和 extension 配置指令。Windows 下的 PHP 增加庫清單列出了需要或曾經需要額外 PHP DLL 檔案的增加庫。下面是內建的增加庫清單:

PHP 4 中(截止到 PHP 4.3.11):BCMathCaledarCOMCtypeFTPMySQLODBCOverloadPCRESessionTokenizerWDDXXMLZlib

PHP 5 中(截止到 5.0.4)有以下修改。新增內建:DOMLibXMLIconvSimpleXMLSPLSQLite。以下不再內建:MySQLOverload

PHP 搜尋增加庫的預設位置在 PHP 4 中是 C:\php4\extensions,在 PHP 5 中是 C:\php5。要修改此項以符合會員自己的 PHP 設定,需要編輯 php.ini 檔案:

  • 需要修改 extension_dir 設定以指向會員放置增加庫的目錄或是說放置 php_*.dll 檔案的位置。例如:

    extension_dir = C:\php\extensions

  • 要在 php.ini 中啟用某增加庫,需要去掉該行 extension=php_*.dll 前的注解符號,將想要加載的增加庫前的分號(;)移除即可。

    例子 6-8. 啟用 Bzip2 增加庫

    // 將這一行
    ;extension=php_bz2.dll
    
    // 改成這樣
    extension=php_bz2.dll

  • 有些增加庫需要額外的 DLL 才能工作。其中一部分內含在發行包裡,PHP 4 中在 C:\php\dlls\ 目錄下,PHP 5 中在主目錄下,但還有一些,例如 Oracle(php_oci8.dll)所需要的 DLL 沒有綁定在發行包裡。若果安裝 PHP 4,將綁定的 DLL 從 C:\php\dlls 複製到主目錄 C:\php 中。別忘了將 C:\php 放到系統路徑 PATH 中去(此過程在另外的 FAQ 條目中有說明)。

  • 某些 DLL 沒有綁定在 PHP 發行包中,明細見每個增加庫的文件頁。此外有關 PECL 的說明見手冊頁 PECL 增加庫安裝。在 PECL 中有日益增加數目巨大的 PHP 增加庫,這些增加庫需要單獨下載

注: 若果運行伺服器模組版的 PHP,在修改了 php.ini 之後別忘了重新啟動 web 伺服器以使其改動生效。

下表說明了哪些增加庫需要額外的 DLL。

表格 6-1. PHP 增加庫

增加庫說明註解
php_bz2.dllbzip2 壓縮函數庫
php_calendar.dll曆法轉換函數庫自 PHP 4.0.3 起內建
php_cpdf.dllClibPDF 函數庫
php_crack.dll密碼破解函數庫
php_ctype.dllctype 家族函數庫自 PHP 4.3.0 起內建
php_curl.dllCURL,用戶端 URL 庫函數庫需要:libeay32.dllssleay32.dll(已附帶)
php_cybercash.dll網路現金付款函數庫PHP <= 4.2.0
php_db.dllDBM 函數庫已廢棄。用 DBA 替代之(php_dba.dll
php_dba.dllDBA:資料庫(dbm 風格)抽像層函數庫
php_dbase.dlldBase 函數庫
php_dbx.dlldbx 函數庫 
php_domxml.dllDOM XML 函數庫 PHP <= 4.2.0 需要:libxml2.dll(已附帶),PHP >= 4.3.0 需要:iconv.dll(已附帶)
php_dotnet.dll.NET 函數庫PHP <= 4.1.1
php_exif.dllEXIF 函數庫 需要 php_mbstring.dll。並且在 php.ini 中,php_exif.dll 必須在 php_mbstring.dll之後加載。
php_fbsql.dllFrontBase 函數庫PHP <= 4.2.0
php_fdf.dllFDF:表單資料格式化函數庫需要:fdftk.dll(已附帶)
php_filepro.dllfilePro 函數庫唯讀訪問
php_ftp.dllFTP 函數庫自 PHP 4.0.3 起內建
php_gd.dllGD 庫圖像函數庫 在 PHP 4.3.2 中移除。此外注意在 GD1 中不能用真彩色函數,用 php_gd2.dll 替代。
php_gd2.dllGD 庫圖像函數庫GD2
php_gettext.dllGettext 函數庫 PHP <= 4.2.0 需要 gnu_gettext.dll(已附帶),PHP >= 4.2.3 需要 libintl-1.dlliconv.dll(已附帶)。
php_hyperwave.dllHyperWave 函數庫
php_iconv.dllICONV 字集轉換需要:iconv-1.3.dll(已附帶),PHP >=4.2.1 需要 iconv.dll
php_ifx.dllInformix 函數庫需要:Informix 庫
php_iisfunc.dllIIS 管理函數庫
php_imap.dllIMAP,POP3 和 NNTP 函數庫
php_ingres.dllIngres II 函數庫需要:Ingres II 庫
php_interbase.dllInterBase functions需要:gds32.dll(已附帶)
php_java.dllJava 函數庫PHP <= 4.0.6 需要:jvm.dll(已附帶)
php_ldap.dllLDAP 函數庫 PHP <= 4.2.0 需要 libsasl.dll(已附帶),PHP >= 4.3.0 需要 libeay32.dllssleay32.dll(已附帶)
php_mbstring.dll多位元組字串函數庫
php_mcrypt.dllMcrypt 加密函數庫需要:libmcrypt.dll
php_mhash.dllMhash 函數庫PHP >= 4.3.0 需要:libmhash.dll(已附帶)
php_mime_magic.dllMimetype 函數庫需要:magic.mime(已附帶)
php_ming.dllMing 函數庫(Flash)
php_msql.dllmSQL 函數庫需要:msql.dll(已附帶)
php_mssql.dllMSSQL 函數庫需要:ntwdblib.dll(已附帶)
php_mysql.dllMySQL 函數庫PHP >= 5.0.0 需要 libmysql.dll(已附帶)
php_mysqli.dllMySQLi 函數庫PHP >= 5.0.0 需要 libmysql.dll(PHP <= 5.0.2 中是 libmysqli.dll)(已附帶)
php_oci8.dllOracle 8 函數庫需要:Oracle 8.1+ 用戶端庫
php_openssl.dllOpenSSL 函數庫需要:libeay32.dll(已附帶)
php_oracle.dllOracle 函數庫需要:Oracle 7 用戶端庫
php_overload.dll物件重載函數庫自 PHP 4.3.0 起內建
php_pdf.dllPDF 函數庫
php_pgsql.dllPostgreSQL 函數庫
php_printer.dll印表機函數庫
php_shmop.dll共享記憶體函數庫
php_snmp.dllSNMP 函數庫僅用於 Windows NT!
php_soap.dllSOAP 函數庫PHP >= 5.0.0
php_sockets.dllSocket 函數庫
php_sybase_ct.dllSybase 函數庫需要:Sybase 用戶端庫
php_tidy.dllTidy 函數庫PHP >= 5.0.0
php_tokenizer.dllTokenizer 函數庫自 PHP 4.3.0 起內建
php_w32api.dllW32api 函數庫
php_xmlrpc.dllXML-RPC 函數庫PHP >= 4.2.1 需要 iconv.dll(已附帶)
php_xslt.dllXSLT 函數庫 PHP <= 4.2.0 需要 sablot.dllexpat.dll(已附帶)。PHP >= 4.2.1 需要 sablot.dllexpat.dlliconv.dll(已附帶)。
php_yaz.dllYAZ 函數庫需要:yaz.dll(已附帶)
php_zip.dllZip 檔案函數庫唯讀訪問
php_zlib.dllZLib 壓縮函數庫自 PHP 4.3.0 起內建