連載
» 2018年11月13日 05時00分 公開

.NET開発者のためのPHPアプリお手軽開発入門:VS CodeとPHPとSQL Server(LocalDB)で作ったアプリをIISへデプロイ (1/2)

SQL Server(LocalDB)を利用したアプリをIISにデプロイするための手順と、PHPコードのデバッグを見てみよう。

[かわさきしんじ,Insider.NET編集部]
「.NET開発者のためのPHPアプリお手軽開発入門」のインデックス

連載「.NET開発者のためのPHPアプリお手軽開発入門」

 前回は、Visual Studio Code(以下、VS Code)とPHPを利用して、SQL Server(LocalDB)にデータを保存するToDoリストアプリを取りあえず完成させた。今回はこれをIIS(フルIIS)にデプロイしてみよう。ただし、LocalDBの仕様から単にPHPのコードをIISにコピーするだけでは済まないので、少し手間が必要になる。

前回のコードをそのままIISの仮想ディレクトリに配備してみる

 本稿では、「C:\project\vscphpwebapps\vscphpwebapps_07」ディレクトリで開発を行い、IISでは「phptodolist」という仮想ディレクトリを作成して、その物理パスを「C:\websites\phptodolist」ディレクトリにする。

仮想ディレクトリの追加 仮想ディレクトリの追加

 まずはPHPコードは前回のままに、VS CodeのDeploy (Reloaded)拡張機能を使って、IISにデプロイしてみる。Deploy (Reloaded)拡張機能については「VS CodeからPHPアプリをローカル実行/デプロイ!」でも述べているが、以下の記述をワークスペース設定(settings.jsonファイル)に記述する。

{
  "deploy.reloaded": {
    "targets": [
      {
        "type": "local",
        "name": "deploy to IIS",
        "description": "deploy to IIS",
        "dir": "C:\\websites\\phptodolist"
      }
    ],
    "packages": [
      {
        "name": "php todo list app",
        "description": "php todo list app",
        "files": [
          "**/*.php"
        ],
        "exclude": [
          ".vscode/**"
        ]
      }
    ]
  }
}


VS Code上で開発しているファイルをIISにデプロイするためのワークスペース設定(settings.jsonファイル)

 targets項目では、その子となっているtype項目を"local"にしてローカルファイルシステムへのデプロイを行うことを指示し、dir項目でコピー先のディレクトリを指定している。packages項目では、デプロイ対象のファイルをfiles項目で指定している。上の設定では拡張子が「.php」のファイルだけを指定している。exclude項目はコピーしないファイル/ディレクトリを指定するものだ。

 設定を記述したら、コマンドパレットを開いて、[Deploy Reloaded: Deploy]コマンドを選択する。すると、デプロイ対象を問い合わせるダイアログが表示されるので[Package]を選択すればよい。

[Deploy Reloaded: Deploy]コマンドを選択
[Deploy Reloaded: Deploy]コマンドを選択
[Package]を選択
[Package]を選択

VS CodeからIISの仮想ディレクトリへのデプロイを実行


 これにより、上記JSONファイルで記述されたパッケージ(PHPコードを含んだファイル)がターゲットディレクトリへとコピーされる。コピーされたファイルはVS Code下部に表示されるパネルの[出力]タブで[Deploy Reloaded]を選択すると表示される。

コピーされたファイルが表示される コピーされたファイルが表示される

 デプロイが完了したら、ブラウザで「localhost/phptodolist」を開いてみよう。すると、以下のようにアプリがうまく動いていないことが分かる。

VS CodeのPHP Server拡張機能でホストしたときには動いていたアプリが、IISでは動かない VS CodeのPHP Server拡張機能でホストしたときには動いていたアプリが、IISでは動かない

 というわけで、この問題を修正して、IISでもアプリが動くようにしていこう。そのためには、VS Code+PHP Debug拡張機能でこのコードをデバッグして、原因がどこにあるかを知る必要がある。

PHPコードのデバッグ

 本連載では、PHPとその拡張機能であるXdebugを、VS CodeとIISで共用している(つまり、IISが実行するPHPにもXdebug拡張機能が含まれている)ので、VS CodeからIISへデプロイしたコードであってもXdebugとPHP Debug拡張機能を使ってデバッグできる(これらについては、本連載の第1回や「PHPプログラミングも快適に! VS Codeの二大拡張機能」も参照されたい)。

 ここでは「C:\project\vscphpwebapps\vscphpwebapps_07」ディレクトリをVS Codeで開いた状態でデバッグしてみよう(IISの仮想ディレクトリに.vscodeディレクトリやlaunch.jsonファイルを置きたくないため)。

 デバッグの準備は、VS Codeで[デバッグ]ビューを表示して、ドロップダウンから[構成の追加]を選択するか、その隣の歯車アイコンをクリックし、次にダイアログが表示されたら[PHP]を選択して、launch.jsonファイルを作成するだけだ。

[構成の追加]を選択
[構成の追加]を選択
[PHP]を選択
[PHP]を選択

PHPコードのデバッグ用のlaunch.jsonファイルを追加


 launch.jsonファイルの内容は特に修正する必要はないので、そのまま[デバッグの開始]ボタン(緑色の三角形のアイコン)をクリックしよう。ここではデータベース接続をつかさどるutil.phpファイルが開かれていることを覚えておこう。

デバッグを開始する デバッグを開始する

 この状態で、ブラウザで先ほど開いたページをリロードすると、VS Codeが例外を補足して、実行が中断される。

例外が発生して実行が中断される 例外が発生して実行が中断される

 注目したいのは、util.phpファイルがもう1つ開かれた点だ。これはデプロイ先(C:\websites\phptodolistディレクトリ)にあるutil.phpファイルであり、IISで実行しているPHPアプリの動作が中断されたことを示している。メッセージが文字化けしており、その内容が分からないので、ステップ実行をしてcatch節に移動して、変数$eの内容を示したのが以下だ。[デバッグ]ビューの[変数]ペーンに注目されたい。

変数$eの内容からSQL Serverへの接続で問題が発生したことが分かる 変数$eの内容からSQL Serverへの接続で問題が発生したことが分かる

 変数$eの内容を展開していった結果、SQL Serverへの接続で問題が発生したことが分かった。ちょっと薄くなってしまったがポップアップにも「SQL Server ネットワーク インターフェイス」とある。ただし、どんな問題かまでは不明だ。これ以上の原因究明はVS Codeでは無理そうだ(次ページに続く)。

       1|2 次のページへ

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。