特集:PHP on Windows Azure

PHP開発者もクラウド開発を始めよう!

デジタルアドバンテージ 一色 政彦
2009/07/28
Page1 Page2 Page3 Page4

PHPプログラムを動作させるための設定:PHP実行環境の完全信頼実行の許可

 まずPHP実行環境が、セキュリティ制限を受けずに、つまり完全信頼(Full Trust)で動作するように設定する必要がある。これには、WebCgiRole1プロジェクトのすべての.EXEファイル(=実行可能ファイル)が完全信頼で実行されるように設定する。

 具体的には次の画面のように、[ソリューション エクスプローラ]でCloudService1プロジェクトの「Roles」フォルダの中にあるWebロール(本稿の例では「WebCgiRole1」)を選択し、[プロパティ]ウィンドウで[Enable Full Trust]プロパティを「True」に設定すればよい。

PHP実行環境の完全信頼実行を許可する設定
上記の設定をすることにより、WebCgiRole1プロジェクトのすべての.EXEファイル(=実行可能ファイル)が完全信頼で実行できるようになる。
  [ソリューション エクスプローラ]でCloudService1プロジェクトの「Roles」フォルダの中にあるWebロール(本稿の例では「WebCgiRole1」)を選択する。
  [プロパティ]ウィンドウで[Enable Full Trust]プロパティを「True」に設定する。

 この設定により、CloudService1プロジェクトの中にある「ServiceDefinition.csdef」(=クラウド・サービス定義ファイル。詳しくはこちらを参照)の<WebRole>要素のenableNativeCodeExecution属性がtrueに変更される。もちろん[プロパティ]ウィンドウを使わずに、直接この部分のコードを手動で書き換えてもよい。

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="CloudService1" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
  <WebRole name="WebCgiRole1" enableNativeCodeExecution="true">
    <InputEndpoints>
      <!-- Must use port 80 for http and port 443 for https when running in the cloud -->
      <InputEndpoint name="HttpIn" protocol="http" port="80" />
    </InputEndpoints>
    <ConfigurationSettings />
  </WebRole>
</ServiceDefinition>
完全信頼実行を許可する設定になったサービス定義ファイル「ServiceDefinition.csdef」

PHPプログラムを動作させるための設定:FastCGIアプリの設定

 次に、PHP実行環境に含まれる「php-cgi.exe」ファイルをFastCGIアプリとして(CGI Webロールに)設定する。これには、WebCgiRole1プロジェクトのWeb.roleconfigファイルを開き、次のコードの太字部分を追記する(実際には、追記部分がコメントアウトされているので、それを解除し、状況に合わせて内容を書き換えればOKだ)。

<?xml version="1.0"?>

<configuration>
  <system.webServer>
    <fastCgi>
      <application fullPath="%RoleRoot%\php\php-cgi.exe" />
    </fastCgi>
  </system.webServer>
</configuration>
FastCGIアプリを設定したWebロール構成ファイル「Web.roleconfig」
「%RoleRoot%」は、実行時にWebCgiRole1プロジェクトのルート・フォルダのフル・パスに展開される。

PHPプログラムを動作させるための設定:FastCGIハンドラの設定

 さらに、.phpファイルがPHP実行環境で処理されるように、「php-cgi.exe」ファイルをFastCGIハンドラとして(Webアプリに)設定する。これには、WebCgiRole1プロジェクトのWeb.configファイルを開き、次のコードの太字部分を追記する(追記部分がコメントアウトされているので、それを解除し、状況に合わせて内容を書き換えればOK)。

<?xml version="1.0"?>

<configuration>
  ……省略……
    <system.webServer>
      ……省略……
      <handlers>
        ……省略……
        <add name="FastGGI Handler"
          verb="*"
          path="*.php"
          scriptProcessor="%RoleRoot%\php\php-cgi.exe"
          modules="FastCgiModule"
          resourceType="Unspecified" />
      </handlers>
    </system.webServer>
  ……省略……
</configuration>
FastCGIハンドラを設定したWebアプリ構成ファイル「Web.config」
この設定により、すべての.phpファイルがPHP実行環境で処理されるようになる。

 以上ですべての準備が整った。

PHPプログラムの実行

 さっそく、PHPアプリを何か動かしてみよう。最初はPHPアプリで最もシンプルな「phpinfo();」(=PHP環境情報を出力する関数)を表示してみる。

 [ソリューション エクスプローラ]の「WebCgiRole1」プロジェクトを右クリックして、表示されるコンテキスト・メニューから[追加]−[新しい項目]を選択する。これにより、次の画面の[新しい項目の追加]ダイアログが表示される。

[新しい項目の追加]ダイアログによる.phpファイルの追加

 ダイアログ左側の[カテゴリ:]から「全般」を選択し、右側の[テンプレート:]から「テキスト ファイル」を選択する。[ファイル名:]に「phpinfo.php」と入力し、[追加]ボタンをクリックする。これにより、[ソリューション エクスプローラ]上の「WebCgiRole1」プロジェクト内に「phpinfo.php」ファイルが追加され、そのファイルがコード・エディタで開かれる。

 そこに、

<?php phpinfo(); ?>

というPHPコードを記述する。

PHP環境情報を表示するPHPコードが記述されたphpinfo.phpファイルの例

 以上でコーディングは完了したので、Visual StudioのIDEのメニュー・バーから[デバッグ]−[デバッグなしで開始]を実行する。Webブラウザが起動したら、URLアドレスに「phpinfo.php」を入力すると、次の画面のようにPHP環境情報が表示される。

PHP環境情報を表示するサンプル(phpinfo.php)の実行例

 以上がセッションでのデモの流れだった。その後、亀本氏により「PHPアプリをWindows Azure上に乗せるポイント」が紹介された。最後に、その内容を紹介しよう。


 INDEX
  [特集] PHP on Windows Azure
  PHP開発者もクラウド開発を始めよう!
    1.PHP開発でWindows Azureを利用する理由
    2.PHPによるWindows Azureクラウド・サービスの開発(1)
  3.PHPによるWindows Azureクラウド・サービスの開発(2)
    4.PHPアプリをWindows Azureに乗せるコツ
Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ

.NET未来展望台

未来展望台コーナースポンサーからのお知らせ


- PR -
- PR -
ソリューションFLASH

「ITmedia マーケティング」新着記事

米司法省がGoogleに「Chrome」売却要求 広告業界への影響は?
米司法省によるGoogleへのChrome売却要求は、リテールメディアネットワークに恩恵を与え...

トランプ氏勝利で追い風 ところでTwitter買収時のマスク氏の計画はどこへ?――2025年のSNS大予測(X編)
2024年の米大統領選挙は共和党のドナルド・トランプ氏の勝利に終わった。トランプ氏を支...

AI導入の効果は効率化だけじゃない もう一つの大事な視点とは?
生成AIの導入で期待できる効果は効率化だけではありません。マーケティング革新を実現す...