Azure網站上的PHP — 配置

在前一篇文章中,我們討論了Azure網站上的PHP架構。在本文中,我將詳細介紹如何配置Azure網站上的PHP。

指定PHP版本

登錄到Microsoft Azure管理門戶網站,在您的網站的配置頁面,在常規配置項下,您可以看到PHP版本配置。如下圖所示,在默認情況下,所有網站默認啓用PHP。目前Microsoft Azure網站支持PHP 5.3,PHP 5.4和PHP 5.5。默認版本爲PHP 5.4。

修改PHP配置項

PHP配置分類

PHP配置項分爲四類,下表描述了這四類配置選項的具體作用域。

類型 作用域
PHP_INI_USER 可在用戶腳本(例如通過ini_set())或者.user.ini文件中設定
PHP_INI_PERDIR 可在php.ini,.htaccess中設定
PHP_INI_SYSTEM 可在php.ini中設定
PHP_INI_ALL 可在任何地方設定

 

關於PHP配置選項分類以及作用域,請參考下面的文章。

http://php.net/manual/en/configuration.changes.modes.php

對於運行在Microsot Azure的PHP網站而言,您可以修改非系統級別的PHP配置。基於安全考慮,您不能修改系統級別的配置選項。其中系統級別配置是指類型爲PHP_INI_SYSTEM配置項,這些配置項只能配置在php.ini文件中。修改系統級別配置會影響所有的用戶,因此Azure網站不允許您修改系統級別的PHP配置選項。

下面的PHP文檔列出了所有的PHP配置項。

http://www.php.net/manual/en/ini.list.php

使用.user.ini文件修改PHP配置選項

很多情況下,您的應用需要修改非系統級別的默認配置。比如,默認情況下,Azure網站中的PHP運行環境最大允許上傳8M的文件。如果您的網站需要客戶上傳更大的文件,比如視頻文件,您需要修改upload_max_filesize和post_max_size配置。默認情況下,PHP的最長執行時間爲30秒。而在Microsoft Azure網站中,默認爲300秒。如果希望PHP腳本執行更長時間,那麼您需要修改max_execution_time設置。下面的步驟演示了在Microsoft Azure網站中如何修改非系統級別的配置選項。

  1. 創建一個.user.ini文件,該文件包含要修改的配置項。下面的配置將最大上傳文件設置爲16M,將PHP執行超時時間設置爲120秒。

    ;allow PHP script run as long as 2 minutes
    max_execution_time=120
    ; post_max_size > upload_max_filesize
    Post_max_size=16M
    ; allow upload files up to 16M
    upload_max_filesize=16M
  2. 將該文件部署到網站的根目錄下
  3. 登錄到Microsoft Azure管理門戶網站重新啓動網站使修改立即生效。在Microsoft Azure網站的PHP設置中,user_ini.cache_ttl被設置爲5分鐘。該選項控制PHP保存配置的緩存時間。意味着如果您不重啓網站,那麼修改可能需要5分鐘才能生效。
  4. 您可以通過phpinfo()函數來驗證修改。比如創建一個phpinfo.php包含如下內容:

    <?php phpinfo() ?>

    並將該文件上傳到您的網站根目錄。
  5. 打開瀏覽器訪問phpinfo.php文件,在Configuration部分您會看到您的設置覆蓋了默認設置。下圖顯示了upload_max_filesize的修改結果。16M爲您的網站設置,8M爲全局的默認設置。
使用ini_set函數修改PHP配置項

.user.ini文件的設置應用於您的整個PHP站點。如果只希望針對某個PHP頁面修改配置,那麼您可以選擇使用ini_set()函數。Ini_set()函數修改的配置項只應用於本頁面中,在本頁面執行結束後恢復默認設置,不影響其它頁面。Ini_set()函數的具體函數定義和示例請參考PHP文檔。

http://www.php.net/manual/en/function.ini-set.php

下面我們通過一個簡單的場景來解釋如何使用ini_set函數來修改PHP配置項。在Azure網站中,我部署了一個頁面(error.php),但是該頁面總是返回空白頁面。如果使用IE調試功能,我發現該頁面返回500錯誤。爲了獲取更多的頁面錯誤信息,我寫了一個簡單頁面如下:

<?php
ini_set('display_errors', 'stdout');
include("error.php");
?>

將該頁面部署到Azure網站,訪問該頁面,顯示如下信息。非常簡單直接的告訴我們error.php的第二行有語法錯誤。


下一篇文章,我們將討論如何配置自定義PHP版本。

發佈了33 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章