> 在 Windows 上有兩種加載 PHP 擴展的方式:把擴展編譯進 PHP,或者加載 DLL。
>
> 加載預編譯的擴展是更簡單更被推薦的方式。要加載某擴展,需要在系統中有其相對應的“.dll”文件。所有擴展都會由 PHP 小組定期自動編譯(如何下載見下節)。
要將一擴展編譯入 PHP,請參考從源程序編譯一章。
要編譯一個獨立的擴展(即 DLL 文件),請參考從源程序編譯一章。如果在 PHP 發行包和 PCEL 中都沒有某 DLL 文件,那可能需要自己編譯之后才能使用該擴展。
#### 去哪里找擴展庫?
PHP 擴展庫通常稱為“php_*.dll”(其中星號代表具體某擴展的名字),位于“PHP\ext”目錄下(在 PHP 4 中位于“PHP\extensions”目錄下)。
PHP 發行包中包括了大多數開發者最常用到的擴展庫。這些被稱為“核心”擴展庫。
> 不過呢,如果用戶所需要的功能并沒有被任何核心擴展提供,那還是有可能在 PECL 中找到。PHP Extension Community Library(PECL,PHP 擴展社區庫)是個 PHP 擴展的儲存室,提供了對于所有已知擴展的下載及開發途徑的指南。
如果用戶開發了一個自己使用的擴展,可以考慮將其發布到 PECL 中以便于其他有相同需求的用戶使用。一個很好的副作用是可以得到其他用戶的反饋,感謝,錯誤報告甚至修正/更新。不過在向 PECL 發布擴展之前,請先閱讀 http://pecl.php.net/package-new.php。
#### 下載哪個擴展?
用戶常常會發現每個 DLL 都有好幾個版本:
* 不同的版本號(至少前兩個數字要一致)
* 不同的線程安全性設定
* 不同的處理器體系(x86,x64,...)
* 不同的排錯設定
#### 其它
請記住用戶的擴展設定應該與所使用的 PHP 可執行文件的設定都保持一致。以下腳本可以顯示所有 PHP 設定:
Example #1 phpinfo() call
~~~
<?php
phpinfo();
?>
~~~
或者在命令行運行:
> drive:\\path\to\php\executable\php.exe -i
#### 載入一個擴展
最常見的方式是在 php.ini 配置文件里包含一個 PHP 擴展。請注意很多擴展已經在 `php.ini` 里了,僅需要移除分號來激活它們。
~~~
;extension=php_extname.dll
extension=php_extname.dll
~~~
不過呢,有些 web 服務器會搞混,因為其并不一定使用和 PHP 可執行文件處于同一目錄下的 php.ini 文件。要搞清楚具體使用了哪一個 php.ini 文件,在 phpinfo() 的輸出中查看:
~~~
Configuration File (php.ini) Path C:\WINDOWS
Loaded Configuration File C:\Program Files\PHP\5.2\php.ini
~~~
激活一個擴展后,保存 php.ini 文件并重啟動 web 服務器,然后用 phpinfo() 再次查看確定。新的擴展應該有其自己的一節。
#### 解決問題
如果某擴展并未在 phpinfo() 中顯示,應該查看日志以確定問題出在哪里。
如果是在命令行使用 PHP(CLI),擴展加載出錯信息會直接在屏幕顯示。
如果在 web 服務器中使用 PHP,則日志文件的位置與格式各不相同。請閱讀所使用的 web 服務器之文檔以確定日志文件的位置,這與 PHP 本身并無關系。
最常見的問題是 DLL 文件的位置,php.ini 中“extension_dir”設定的值,以及編譯時的設置不匹配。
如果問題出在編譯時設置不匹配,那可能所下載的 DLL 文件不對。可以嘗試重新下載一個設置匹配的擴展。此外,phpinfo() 可以起到很大幫助。
* * * * *
http://php.net/manual/zh/install.pecl.windows.php