CodeZine(コードジン)

特集ページ一覧

PHPも使える! Google App Engine for Java(前編)

Google App Engine for Javaで動作するスクリプト系言語 (1)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/06/09 14:00
目次

Quercus用PHP設定ファイル

 先ほどweb.xmlファイルに「php.ini」というファイル名を定義しました。このファイルはQuercusに対するPHPの設定情報を記述するファイルです。

 C言語で実装されたPHPのディレクティブがすべて使えるというわけではありませんので、注意が必要です。

 それではphp.iniを「war/WEB-INF」フォルダ配下に追加し、次の内容を定義しましょう。

[リスト3]php.ini
unicode.semantics=on
unicode.http_input_encoding=MS932
unicode.output_encoding=Windows-31J
unicode.runtime_encoding=MS932

(1)unicode.semantics

 QuercusのPHP実行環境ではバイト配列はISO-8859-1として扱われますが、日本語を扱う場合など、Unicodeとして扱いたい場合には、この設定を「on」にする必要があります。

(2)unicode.http_input_encoding

 HTTPのPOSTメソッドなどで、クライアント側から送信されたリクエストの文字列を解析する際に使用するエンコーディングを指定します。

(3)unicode.output_encoding

 QuercusServletがレスポンスとして返すHTTPヘッダのContentTypeに記述されるcharsetの値を指定します。

(4)unicode.runtime_encoding

 QuercusServletがパラメータなどで受け取った文字列を解析するためのエンコーディングを指定します。

Quercusで設定できるphp.iniのディレクティブ

 QuercusではC言語で実装されたPHP5または6のスクリプトがそのまま動作することを目指していますので、php.iniファイルのディレクティブも多くのものが設定可能となっています。

 

 例えば上記で設定した「unicode.semantics」などのディレクティブは、C言語で実装されたPHP6から使用可能になっています。また、「jms.connection_factory」など、Java依存のディレクティブも設定可能です。

 

 ただし、設定は可能ですが内部では使われていないディレクティブもあり、ドキュメントも未整備なため、具体的にどのディレクティブが有効かを確認するにはソースを見るしかないのが残念です。Google App Engine for Javaへの対応と共に、今後を期待したいところです。

Echoアプリケーション

 それでは、フォームのテキストフィールドに入力した文字列をPOSTで自分自身に送信し、表示させるEchoアプリケーションを作成してみましょう。このサンプルではPHPのスクリプトファイルは、すべてMS932で作成します。

 作成したプロジェクト(PHPonGAE4J)をマウスで選択した後、Eclipseのメニューから[ファイル]-[新規]-[ファイル]を選択します。[新規ファイル]ダイアログで「war」以下に「echo.php」という名前のファイルを作成します。

新規ファイル追加ダイアログ
新規ファイル追加ダイアログ

 「echo.php」を右クリックし、メニューから[プロパティー]を選択します。

 「プロパティー:echo.php」ダイアログの左側にある[リソース]を選択すると、「テキスト・ファイル・エンコード」の値を確認できます。

ファイルのプロパティダイアログ
ファイルのプロパティダイアログ

 「echo.php」には、次のように記述します。

[リスト4]echo.php
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=Windows-31J" />
    <title>Echoサンプル</title>
  </head>
  <body>
    <h1>Echoサンプル</h1>
    <?php
      // (1)$_POST変数から"echo"という名前のパラメータを取得
      $echo = $_POST["echo"];
      // (2)タグなどの文字をエンティティに変換
      $echo = htmlspecialchars($echo, ENT_QUOTES);
      if ($echo != "") {
    ?>
    <!-- (3)$echo変数の値を表示 -->
    <p style="border-style:solid"><?= $echo ?></p>
    <?php
      }
    ?>
    <!-- (4)自分自身へPOST -->
    <form action="/echo.php" method="post">
      <div><input type="text" name="echo" /></div>
      <div><input type="submit" value="送信" /></div>
    </form>
  </body>
</html>

 C言語で実装されたPHPのスクリプトと同じです。ここでは次のような処理を記述しています。

  1. $_POST変数から"echo"という名前のパラメータを取得し、$echo変数に代入
  2. タグなどの文字をエンティティに変換
  3. $echo変数の値を表示
  4. 自分自身(echo.php)にPOSTメソッドで送信

  • LINEで送る
  • このエントリーをはてなブックマークに追加

修正履歴

  • 2009/05/25 21:55 ローカルサーバのURLが「http://<登録したApplication ID>.appspot.com/echo.php」になっているのを「http://localhost:8080/echo.php」に変更

  • 2009/05/25 21:54 ローカルサーバのURLga

バックナンバー

連載:Google App Engine for Javaで動作するスクリプト系言語

著者プロフィール

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

  • WINGSプロジェクト 花田 善仁(ハナダ ヨシヒト)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5