PHPも使える! Google App Engine for Java(前編)
Google App Engine for Javaで動作するスクリプト系言語 (1)
ダウンロード サンプルファイル (5.4 MB)
Quercus用PHP設定ファイル
先ほどweb.xmlファイルに「php.ini」というファイル名を定義しました。このファイルはQuercusに対するPHPの設定情報を記述するファイルです。
C言語で実装されたPHPのディレクティブがすべて使えるというわけではありませんので、注意が必要です。
それではphp.iniを「war/WEB-INF」フォルダ配下に追加し、次の内容を定義しましょう。
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では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」には、次のように記述します。
<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のスクリプトと同じです。ここでは次のような処理を記述しています。
$_POST変数から"echo"という名前のパラメータを取得し、$echo変数に代入- タグなどの文字をエンティティに変換
$echo変数の値を表示- 自分自身(echo.php)にPOSTメソッドで送信
- 修正履歴
-
- 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で動作するスクリプト系言語連載記事一覧
-
- PHPも使える! Google App Engine for Java(後編)
- PHPも使える! Google App Engine for Java(前編)
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 花田 善仁(ハナダ ヨシヒト)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア


