LoginSignup
4
0

More than 5 years have passed since last update.

PHPとClassic ASP(レガシーASP)を共存させてみる

Last updated at Posted at 2019-04-06

Classic ASPで作られたWebサイトを運用してるけど今後の機能拡張はPHPで行っていきたい!
みたいな人のために(いるかわかんないけど…)。

ASPの環境構築はこちらを参考にしてください。

Windows10でClassic ASP(レガシーASP)実行環境を構築する

IISでPHPを動かせるようにする

CGI機能の有効化

コンパネの「プログラムと機能」から「Windows機能の有効化または無効化」を選択。

image.png

「インターネット インフォメーション サービス」->「World Wide Webサービス」->「アプリケーション開発機能」->「CGI」にチェックを入れる。

image.png

OKを押すとCGI機能が有効になる。

image.png

PHPのインストール

PHPのサイトからNon Thread Safe版のZipをダウンロード。

image.png

お使いの環境に合わせて64bitか32bitを選んでください。

展開したら適当な場所に置く。
今回はフォルダ名をphpにしてCドライブ直下に置いた。

phpフォルダに入るとphp.ini-developmentというファイルがあるので、これをコピーしてphp.iniにリネームする。

同階層にphp-cgi.exeがあるのでこれをダブルクリックで実行、DOS窓が開いて何も表示されなければOK。

IISの設定

IISマネージャーを開き、拡張子とPHPファイルの関連付けを行う。

対象のサイトを選択し、「ハンドラーマッピング」を選択する

1.PNG

「モジュール マップの追加」をクリック。

image.png

次のように入力。
PHPのパスは実際の環境に合わせて変更する。

image.png

要求の宣言を次のように設定。

image.png

「OK」を押すと次のようにダイアログが上がるので「はい」を選択。

image.png

PHP実行環境の設定はこれで完了。

PHPの動作確認

ドキュメントルートに適当なPHPファイルを作る。

index.php
<?php
phpinfo();
?>

http://localhost/index.php」にアクセス。

image.png

IISでPHPの動作が確認できた。

共存させてみる

PHPとASPで互いを呼び合うフォームを作ってみる。
両方ともファイルエンコーディングはUTF-8で保存すること。

form.php
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
</head>
<body>
<p>
<?php
if(filter_input(INPUT_GET, 'val')){
  echo filter_input(INPUT_GET, 'val') . ' -> ';
}
?>
PHP
</p>
<form action="/form.asp?val=PHP" method="post">
  <div>
    <label for="msg">message:</label>
    <input type="text" name="msg" value="<?= filter_input(INPUT_POST, 'msg') ?>">
  </div>
  <div class="button">
    <button type="submit">Send your message.</button>
  </div>
</form>
</body>
</html>
form.asp
<%@ CODEPAGE=65001 %>
<% Session.CodePage=65001 %>
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
</head>
<body>
<p>
<%
If Request.QueryString("val") <> "" Then
  Response.Write Request.QueryString("val") & " -> "
End If
%>
ASP
</p>
<form action="/form.php?val=ASP" method="post">
  <div>
    <label for="msg">message:</label>
    <input type="text" name="msg" value="<%= Request.Form("msg") %>">
  </div>
  <div class="button">
    <button type="submit">Send your message.</button>
  </div>
</form>
</body>
</html>

まずはPHPのページ「http://localhost/form.php」にアクセス。

image.png

ボタンを押してASPのページに遷移する。

image.png

image.png

またボタンを押してPHPのページに遷移する。

image.png

PHPとASPでパラメータを渡しつつ、互いのページが行き来しあえることが確認できた。


というわけで同一サイトでPHPとASPを動かすことはできましたが、お察しの通りステートレスなWebサイトにしかこれでは対応できません。

セッションを利用するステートフルなWebサイトでは、互いの言語がセッションを共有できないため、結局はPHPかASPかのどちらかでセッションを管理し、片方はステートレスな処理を担当することになると思います。

以上でした。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0