﻿# 如何在 Windows Azure 網站 (WebSite) 使用 PEAR 套件

若要在 Windows 平台安裝 [Windows Azure SDK for PHP](https://github.com/windowsazure/azure-sdk-for-php) 開發套件，可以透過 [Composer](http://getcomposer.org/) 或 [PEAR](http://pear.php.net/) 進行安裝，如果可以，最簡單的方式是透過 [Composer](http://getcomposer.org/) 直接安裝套件，安裝完之後直接把 **vendor** 目錄整個佈署到網站根目錄下，再透過 **<?php require 'vendor/autoload.php'; ?>** 自動載入即可。但若遇到 [Composer](http://getcomposer.org/) 無法成功安裝 [Windows Azure SDK for PHP](https://github.com/windowsazure/azure-sdk-for-php) 開發套件的情況，那就必須手動透過 [PEAR](http://pear.php.net/) 工具進行套件下載。不過，[Windows Azure 網站](http://www.windowsazure.com/zh-tw/services/web-sites/)並不支援自訂 [PEAR](http://pear.php.net/) 套件安裝，所以若要佈署本機的 [PEAR](http://pear.php.net/) 套件到 [Windows Azure 網站](http://www.windowsazure.com/zh-tw/services/web-sites/)，還有些額外的工作要做。

先透過 [Web Platform Installer](http://www.microsoft.com/web/downloads/platform.aspx) 在本機安裝完整 Windows Azure SDK for PHP 套件：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/95128557d96945e408fa-image_2350.png)

[![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/8ca3d40261b221f3f37c-image_thumb_192.png)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/57e24b8d59792beb03af-image_2351.png)

[![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/90f249b856e208b5d03d-image_thumb_193.png)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/f859cfc4e16956a96b00-image_2352.png)

**注意**：透過 [Web Platform Installer](http://www.microsoft.com/web/downloads/platform.aspx) 完整 Windows Azure SDK for PHP 的過程，並沒有真的把 [Windows Azure SDK for PHP](https://github.com/windowsazure/azure-sdk-for-php) 下載回來，這個安裝項目僅僅幫你安裝所有**相依套件**而已！

**安裝 PEAR 工具** ( 參考 [Getting and installing the PEAR package manager](http://pear.php.net/manual/en/installation.getting.php) 文件 )

-   建立 **C:\\php** 資料夾
-   下載 [http://pear.php.net/go-pear.phar](http://pear.php.net/go-pear.phar "http://pear.php.net/go-pear.phar") 並儲存到 **C:\\php** 目錄下
-   以系統管理員身分開啟**命令提示字元**視窗，並進入 **C:\\php** 資料夾
-   執行 **php go-pear.phar** 然後一直按 Enter 就可以完成安裝
-   將 **C:\\php\\PEAR\_ENV.reg** 機碼合併到目前使用者的機碼資料庫中 (直接用滑鼠雙擊按下 \[是\] 即可)

**透過 PEAR 工具安裝 Windows Azure 套件**

-   以系統管理員身分開啟**命令提示字元**視窗，並進入 **C:\\php** 資料夾
-   執行 **pear channel-discover pear.windowsazure.com**
-   執行 **pear install pear.windowsazure.com/WindowsAzure-0.3.1** (注意:版本可能會變)

**註**: 如果上述步驟無法成功執行，可以先執行 **pear clear-cache** 清除本地 PEAR 快取，如下:

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/cf1759296100f341f723-image_2353.png)

現在 Windows Azure SDK for PHP 與其相依套件都已經透過 PEAR 安裝完成，所有 PEAR 套件都會放在 **C:\\php\\pear** 資料夾下，如下圖示：

![image](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/66f96d5c5ed086d8f50d-image_2354.png)

**將所有 PEAR 套件佈署到 Windows Azure 網站的方法**

1\. 直接將 **C:\\php\\pear** 資料夾複製到**網站根目錄**下

2\. 在根目錄下建立一個 **.user.ini** 設定檔，此檔案是 Windows Azure 網站設定 PHP 的方式 ( 等同 php.ini 設定檔 )，要求 Windows Azure 網站在執行 PHP 並發生錯誤的時候可以顯示錯誤訊息，其內容如下：

```
display_errors=On
```

3\. 建立一個測試程式 **test.php** 其內容如下，也就是直接載入 WindowsAzure 函式庫：

```
<?phprequire_once 'WindowsAzure/WindowsAzure.php';?>
```

4\. 發布網站到 Windows Azure 網站並執行 **test.php** 網頁，由於無法正確載入函式庫，所以一定會有錯誤，而我最主要的目的則是想得知該網站所在的實體路徑為何！其錯誤訊息範例如下：

Warning: require\_once(WindowsAzure/WindowsAzure.php): failed to open stream: No such file or directory in **C:\\DWASFiles\\Sites\\<網站名稱>\\VirtualDirectory0\\site\\wwwroot**\\test.php on line 2

Fatal error: require\_once(): Failed opening required 'WindowsAzure/WindowsAzure.php' (include\_path='.;C:\\php\\pear') in **C:\\DWASFiles\\Sites\\<網站名稱>\\VirtualDirectory0\\site\\wwwroot**\\test.php on line 2

5\. 接著我們修改 **.user.ini** 設定檔，新增一條 **include\_path** 設定，並且把 PEAR 的路徑寫上去，如下：

```
display_errors=Oninclude_path=".;C:\php\pear;C:\DWASFiles\Sites\<名稱>\VirtualDirectory0\site\wwwroot\pear"
```

6\. 大功告成！

現在你的網站可以正確載入 WindowsAzure 函式庫，也可以執行所有 Windows Azure 所有 API 了！ ^\_^

**相關連結**

-   [Download the Windows Azure SDK for PHP](http://www.windowsazure.com/en-us/develop/php/common-tasks/download-php-sdk/)
-   [Windows Azure SDK for PHP](https://github.com/windowsazure/azure-sdk-for-php) ( GitHub )
-   [microsoft/windowsazure – Packagist](https://packagist.org/packages/microsoft/windowsazure) ( Composer 套件網址 )
-   [PEAR - PHP Extension and Application Repository](http://pear.php.net/)
-   [Composer - Dependency Manager for PHP](http://getcomposer.org/)
-   [Composer - Dependency Manager for PHP](https://github.com/composer/composer) ( GitHub )
-   [PHP 使用 Composer 管理套件、函式厙](http://blog.longwin.com.tw/2013/05/php-composer-package-library-2013/)
-   [The Silver Lining Blog - Site Home - MSDN Blogs](https://learn.microsoft.com/en-us/archive/blogs/silverlining)  
    *Larry Franks and Brian Swan on Open Source and Device Development in the Cloud*
