Java Servlet SAPI Module for PHP 4 Introduction The Java Servlet SAPI Module allows for the execution of PHP 4 as a Servlet from within a Java Servlet Engine, such as Apache's Jakarta Tomcat [1]. It builds upon the mechanism defined by PHP's Java Extension, which can be found in /php4/ext/java. The primary advantage of this from a PHP perspective is that web servers which support servlets typically take great care in pooling and reusing Java Virtual Machines (JVMs). PHP may also be bridged with the Apache Cocoon XML Publishing Framework. [2] A suitably configured system will invoke the PHP binaries through JNI and the output of the page will be processed through the configured XML parser and placed into the pipeline for processing by such filters as XSLT. This enables PHP developers to access the powers of Cocoon to separate their content, style, and logic without requiring them to write a single line of Java code. While this code is intended to be able to run on any servlet engine, it has only been tested on Apache's Jakarta Tomcat to date. Bug reports, success stories and/or patches required to get this code to run on other engines would be appreciated; please send them to the PHP Development Mailinglist [3]. Note: PHP has a habit of changing the working directory. The Java Servlet SAPI Module will eventually change it back, but while PHP is running the servlet engine may not be able to load any classes from the CLASSPATH which are specified using a relative directory syntax, or find the work directory used for administration and JSP compilation tasks. Installing PHP as a Servlet into Apache's Jakarta Tomcat [*] 1.) Build the PHP 4 Java Servlet SAPI Module The javax.servlet package should be in your CLASSPATH. If you're using Tomcat, adding servlet.jar to your CLASSPATH is sufficient. UNIX o ./configure --with-servlet --with-java o Add directory containing libphp4.so to LD_LIBRARY_PATH. Windows o Build ext/java/java.dsp, copy php_java.dll to your extension_dir directory and enable the extension in the php.ini. o Build sapi/servlet/servlet.dsp. o Add the directory containing php4ts.dll and phpsrvlt.dll to the PATH environment variable. 2.) Copy phpsrvlt.jar into your $TOMCAT_HOME/shared/lib directory. 3.) Merge the configuration directives from web.xml file that comes with the Java Servlet SAPI Module into your $TOMCAT_HOME/conf/web.xml configuration file. Make sure that the element ordering of the web.xml is legal with Tomcat and put all the declarations first, followed by all the declarations. Add index.php to the ... block of your $TOMCAT_HOME/conf/web.xml configuration file. 4.) Test your installation by creating a test.php file in your $TOMCAT_HOME/webapps/ROOT directory with in it. Access this file in your browser at http://localhost:8080/test.php and you should see the familiar output of phpinfo(). Installing PHP as a Generator into Apache's Cocoon2 Framework 1.) Build the Java Servlet SAPI Module as described above. 2.) Get the Cocoon2 source tree, either by CVS or from a release archive; a binary distribution does not suffice. Copy the phpsrvlet.jar file into your xml-cocoon2/lib/optional directory and build Cocoon. -- [*] The instructions herein have been tested with Tomcat 4.1.12. [1] http://jakarta.apache.org/tomcat/ [2] http://xml.apache.org/cocoon2/ [3] http://www.php.net/support.php