.

PHP in Google Appengine (Java) via Quercus

Ein häufig gewünschtes Feature der Google App Engine (GAE) ist die Unterstützung von PHP. Es ist aber heute schon möglich PHP Programme in der Google App Engine zum Laufen zu bringen. Das ganze läuft über einen Art Java-PHP Interpreter.

Ein spezielles Servlet (z.B. "GoogleQuercusServlet") nimmt die Anfragen von PHP-Seiten entgegen, übersetzt sie in Java anhand der Quercus Implementierung und liefert das Ergebnis zurück.

Für dieses Tutorial ist ein Google Account für App Engine mit Java und die Installation des Google Plugins in Eclipse notwendig.


1. "Web Application Project" in Eclipse erstellen
Hier kann die Google Dokumentation verwendet werden. Allerdings wird in diesem Tutorial als Projektname "phpGAE" und als Packetname "phpgae" verwendet. Der Packetname wird später nicht gebraucht, da PHP-Dateien nicht kompiliert werden und daher nicht im "src"-Ordner des Projektes, sondern im "war"-Ordner liegen werden. Das Google Web Toolkit benötigen wir nicht.

Web Application Project Setup


2. Einbinden der Quercus-Bibliothek
Zunächst muss Resin 4.0.0, ein JEE Application Server von "caucho" heruntergeladen werden. In diesem befindet sich die "resin.jar", welche das "GoogleQuercusServlet" sowie den PHP nach Java Interpreter enthält.
Die "resin.jar", welche sich im "lib"-Ordner von Resin 4.0.0 befindet muss nun in den "war/WEB-INF/lib"-Ordner des "Web Application Projects" kopiert werden.

Zielverzeichnis für resin.jar


3. Interpretieren von PHP-Dateien in Googles App Engine
Damit Googles App Engine auch weiß, wann und wie es *.php Dateien zu interpretieren hat, müssen noch zwei Änderungen an der "web.xml" und "appengine-web.xml" vorgenommen werden.

web.xml:

<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">
<servlet>
<servlet-name>quercus</servlet-name>
<servlet-class>com.caucho.quercus.servlet.GoogleQuercusServlet</servlet-class>
</servlet>
<servlet-mapping>
<url-pattern>*.php</url-pattern>
<servlet-name>quercus</servlet-name>
</servlet-mapping>
</web-app>


Hier wird das "GoogleQuercuesServlet" der App Engine bekannt gemacht und festgelegt, dass alle Anfragen von PHP-Dateien an den Webserver von diesem Servlet bearbeitet werden sollen.

appengine-web.xml:
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application></application>
<version>1</version>
<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties">
</property></system-properties>
<static-files>
<exclude path="/**.php">
</exclude></static-files>
<resource-files>
<include path="/**.php">
</include></resource-files>
</appengine-web-app>

Die PHP-Dateien werden alle im "war"-Ordner liegen und würden beim Aufruf als Text-Dateien behandelt. Die Folge wäre, dass der Quellcode ausgegeben wird. Um dies zu verhindern müssen die PHP-Dateien als Ressourcen definiert werden und von den statischen Dateien ausgeschlossen werden.


4. Erstellen eins "Hello PHP"-Skriptes
Im "war"-Ordner des Projektes wird eine "hello.php"-Datei mit folgendem Inhalt erstellt.

hello.php:
<?php
echo 'hello php';
?>


5. Lokaler Test
Um das Projekt lokal zu testen, geht man in Eclipse auf: "Run" -> "Run As..." -> "Web Application" und öffnet im Browser die URL "http://localhost:8080/hello.php".

Browser Fenster


6. Laden des Projektes in die Google App Engine
Um das Projekt nun für alle sichtbar im Web zu machen, muss man eine neue Anwendung ("Application ID") in der Google App Engine erstellen. Danach geht man mit Rechtsklick auf das "phpGAE"-Projekt -> "Google" -> "Deploy to App Engine". Dort gibt man seine Benutzerdaten ein und klickt noch auf "App Engine project settings...", gibt seine "Application ID" an und drückt auf "OK" und schließlich auf "Deploy".

Mein Beweis, dass das ganze funktioniert: http://phpgae2.appspot.com/test.php.

Weitere Informationen:

Tags: google java app engine tutorial anleitung php quercus


Kommentare

comments powered by Disqus