Running PHP applications in Tomcat 6
This guide shows how to install and run PHP applications like Moodle, mediaWiki, Joomla as Tomcat 6 web applications. And how to install PHP 5.x for all existing web applications.
Download and install Java, Tomcat and PHP
- Use a graphical packet installer to install PHP. Or download JavaBridge.war, which contains an embedded PHP binary.
- Download and install Java 6 or above.
- Download and install the original tomcat servlet engine.
Install a PHP web application into Tomcat
- Copy the PHP web application JavaBridgeTemplate.war or the demo JavaBridge.war to the Tomcat webapps directory.
- Wait two seconds until Tomcat has loaded the web application.
- Browse to http://127.0.0.1:8080/JavaBridgeTemplate721 to see the PHP info page.
- Rename the file file:webapps/JavaBridgeTemplate721 directory, for example to Moodle, download and install your PHP application to this directory.
- Browse to the name of your web application, for example http://127.0.0.1:8080/Moodle, to run it from your internet browser.
PHP support for all existing Tomcat web applications
If you want to enable PHP for all of your web applications, move the Java libraries from the local web application folder to the Tomcat library folder and edit the Tomcat web configuration as follows:
- Stop Tomcat.
- Move the libraries
JavaBridge.jar
,php-servlet.jar
andphp-script.jar
from thewebapps/JavaBridgeTemplate721/WEB-INF/lib
directory over to the tomcat lib directory. - Edit the Tomcat
conf/web.xml
. Add the following 9 lines marked with a +:
<web-app xmlns=... >
+ <listener><listener-class>php.java.servlet.ContextLoaderListener</listener-class></listener>
+ <servlet><servlet-name>PhpJavaServlet</servlet-name><servlet-class>php.java.servlet.PhpJavaServlet</servlet-class>
+ </servlet>
+ <servlet><servlet-name>PhpCGIServlet</servlet-name><servlet-class>php.java.servlet.fastcgi.FastCGIServlet</servlet-class>
+ <init-param><param-name>prefer_system_php_exec</param-name><param-value>On</param-value></init-param>
+ <init-param><param-name>php_include_java</param-name><param-value>Off</param-value></init-param>
+ </servlet>
+ <servlet-mapping><servlet-name>PhpJavaServlet</servlet-name><url-pattern>*.phpjavabridge</url-pattern> </servlet-mapping>
+ <servlet-mapping><servlet-name>PhpCGIServlet</servlet-name><url-pattern>*.php</url-pattern></servlet-mapping>
...
</web-app> - Start Tomcat again. Now you can add PHP scripts to tomcat.
- Add a PHP test file
<?php require_once("java/Java.inc");
echo java("java.lang.System")->getProperties(); ?>http://yourHost.com:8080/examples/test.php
. - Check the process list using the Unix/Linux or Windows task manager. There should be 5
php-cgi
FastCGI executables waiting for requests from Java. - Please see our FAQ for more information how to set up a load balancer or how to create a distributable PHP/Java web application.