libro
www.tuyano.com
PHPで始めるGoogle App Engine (GAE)入門

GAEの準備から開発開始まで (3/4)

作成:2013-06-03 07:57
更新:2013-06-03 07:57

■ローカル環境でアプリを実行する

先のapp.yamlでは、script:に「helo.php」と指定していますね。従って、このフォルダの中に「helo.php」というスクリプトファイルを用意しましょう。

まぁ、サンプルなのでどんな内容でもかまいませんが、一応、例として下リスト欄のようなものを用意しました。HTMLの出力と、PHPのスクリプトレットがきちんと処理されていることが確認できる内容であればどんなものでも構いません。

では、これをローカル環境で動作確認してみましょう。ローカル環境で実行するためには、GAE SDKに用意されているサーバープログラムを使います。SDKには「dev_appserver.py」というPythonのスクリプトファイルが用意されています。これが、SDKのサーバーを使ってWebアプリケーションを実行するためのスクリプトファイルです。これはコマンドプロンプトから以下のように実行します。
dev_appserver.py --php_executable_path= PHP-CGI.EXEパス フォルダの指定
dev_appserver.pyは、実行するWebアプリケーションのフォルダを引数に指定して呼び出せばいいのですが、PHPで使う場合、--php_executable_pathというオプションでPHP-CGI.EXEのパスを指定します。これにより、CGIとしてPHPのスクリプトが処理されるようになります。

また、フォルダの指定は、パスを延々と指定してもいいのですが、面倒くさいので、フォルダのある場所にcdで移動してフォルダ名を指定して呼び出すのが良いでしょう。あるいはフォルダの中に移動し、「.」でカレントディレクトリを指定して実行するというやり方もあります。

dev_appserver.pyはPythonのスクリプトですから、これをファイル名だけ指定して実行するためには、Pythonのフォルダと、GAE SDKのフォルダが環境変数Pathに追加されている必要があります。もしPathを設定していないならば、dev_appserver.pyのフルパスを指定して書けばよいでしょう。例えば、こんな具合です。(「php-app」フォルダのある場所にcdで移動している場合)
"C:\[PHP SDKのフォルダ]\dev_appserver.py"
    --php_executable_path="C:\[PHPのフォルダ]\php-cgi.exe"
    php-app
実行したら、http://localhost:8080/にブラウザからアクセスしてみてください。helo.phpの内容が表示されます。先ほどのapp.yamlには、url:/と設定されていました。従って、ルート(/)にアクセスすると、helo.phpが実行されたのです。

逆に、http://localhost:8080/helo.phpにアクセスしても表示はされません。「The url "/helo.php" does not match any handlers.」というエラーメッセージが表示されるだけです。GAEでは、通常のWebサイトでのPHP利用のように、単純に「PHPのスクリプトファイルにアクセスすればそれが表示される」というわけではありません。必ず、app.yamlhandler:-url:script:を記述して、スクリプトファイルと公開アドレスを指定しなければいけないのです。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※helo.php

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta http-equiv="content-type" 
        content="text/html; charset=UTF-8">
    <title>sample</title>
    <style>
    body { font-size:12pt; color:#000066; }
    h1 { font-size:18pt; background-color:#DDDDFF; }
    </style>
</head>
<body>
    <header>
        <h1>Sample Page</h1>
    </header>
    <div role="main">
        <p><?php
            $fmt = "Y-m-d";
            date_default_timezone_set("Asia/Tokyo");
            echo "date: " . date($fmt,time());
        ?></p>
    </div>
</body>
</html>

※関連コンテンツ

「PHPで始めるGoogle App Engine (GAE)入門」に戻る