前にPureJavaのPHP実装があると言うのをちらと見たので
GAE/Jで動かせないかと思ってちょっと調べてみた。

ググったらこんなのが出てきた。
http://www.atmarkit.co.jp/fjava/column/koyama/koyama05_1.html

Quercus って言うのが Java で実装された PHP5 の実装らしい。

早速、以下からダウンロード
http://quercus.caucho.com/

最新版 Quercus 4.0.11 の war と src を落した。

quercus-4.0.11.war
quercus-4.0.11-src.jar

まず、quercus-4.0.11-src.jar を開いて見たんだが
ほんとにソースだけ。build.xml とかなんにも無し。

うーん、と思いつつ quercus-4.0.11.war を展開してみる。


war/
|-- LICENSE
|-- META-INF
| +-- MANIFEST.MF
|-- README
|-- WEB-INF
| |-- lib
| | |-- inject-16.jar
| | |-- javamail-141.jar
| | +-- resin.jar
| |-- licenses
| +-- web.xml
|-- images
| |-- caucho-white.jpg
| +-- dragonfly-tiny.png
+-- index.php


えらくシンプル。commons の jar とかいらんのだろうか...

適当に appengine-web.xml を記述して WEB-INF/ の下に入れて置く。


<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application>php-gae</application>
<version>1</version>
<sessions-enabled>true</sessions-enabled>
<precompilation-enabled>true</precompilation-enabled>
<ssl-enabled>true</ssl-enabled>

<static-files>
<include path="**/*.png" />
<include path="**/*.gif" />
<include path="**/*.jpg" />
</static-files>
</appengine-web-app>



ローカルのGAEを起動してみる。

$ /opt/appengine-java-sdk-1.3.5/bin/dev_appserver.sh war

2010/10/03 5:16:08 com.google.apphosting.utils.jetty.JettyLogger info
: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger
2010/10/03 5:16:08 com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
: Successfully processed /home/inou/tool/quercus/war/WEB-INF/appengine-web.xml
2010/10/03 5:16:08 com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
: Successfully processed /home/inou/tool/quercus/war/WEB-INF/web.xml
2010/10/03 5:16:08 com.google.apphosting.utils.jetty.JettyLogger info
: jetty-6.1.x
2010/10/03 5:16:09 com.google.apphosting.utils.jetty.JettyLogger info
: Started SelectChannelConnector@127.0.0.1:8080
2010/10/03 5:16:09 com.google.appengine.tools.development.DevAppServerImpl start
: The server is running at http://localhost:8080/


あれ、普通に起動しちゃった。
じゃあ、http://localhost:8080/ にアクセスしてみる。



おいおい、普通に動いちゃったよ。
どうやら Quercus は何にもしないでも GAE で動くらしい。

お約束の test.php とかを置いてみる。
<? phpinfo(); ?>





これもあっさり表示。

つー訳で GAE で PHP は動きます。
後はBigtable用のライブラリがあればよさげ。

WSJSのファイルシステムと連係できればWeb上からPHPファイルが編集可能になるので凄く便利なんだけどソースみた限り結構大変そうなんだよね。
GPLだし。元々PHP使いでも無いし。需要は有りそうだけど。