(This is a resent. The original posting didn't show up on the mailing list after several hours)
Hello there! I'm new to this list, so I'll introduce myself quickly: As one can already guess from this mail's From: header - my name is Sebastian Bergmann. I am a 23 years old computer science student from Germany and involved in various Open Source projects, most actively with PHP and phpOpenTracker. This semester I'm attending a cource at my university that focuses on Apache's Tomcat and Cocoon2 projects. Although I like Java as a programming language, I never used it in 'real world' applications, but only for University projects. Beeing 'confronted' with the concepts of Tomcat and Cocoon2 I remembered Sam Ruby's Java Servlet SAPI [1] implementation for PHP 4. This SAPI modules enables the execution of the PHP processor as a Servlet. Having already installed Tomcat 4.0 and Cocoon 2.0 RC1 on my Win2K box I decided to install the PHP 4 servlet SAPI module first [2] in such a way, that Tomcat would be able to execute .php scripts. Sam Ruby writes in the Java Servlet SAPI readme: "add phpsrvlt.jar to CLASSPATH add directory containing php4ts.dll and phpsrvlt.dll to PATH merge/overwrite build\tomcat\examples\WEB-INF\web.xml from sapi\servlet" Given the fact that Sam Ruby wrote this over a year ago and for Tomcat 3.x, some things must have changed. One thing I found out is that CLASSPATH is beeing overwritten by catalina.bat, which caused the phpsrvlt.jar not be found. I solved this problem by changing line 75 of catalina.bat to set CLASSPATH=%CP%;%_CLASSPATH% Another problem I came across is a parse error in the web.xml, that comes with the Java Servlet SAPI: <web-app> <servlet> <servlet-name> php </servlet-name> <servlet-class> net.php.servlet </servlet-class> </servlet> <servlet-mapping> <servlet-name> php </servlet-name> <url-pattern> *.php </url-pattern> </servlet-mapping> <servlet> <servlet-name> php-formatter </servlet-name> <servlet-class> net.php.formatter </servlet-class> </servlet> <servlet-mapping> <servlet-name> php-formatter </servlet-name> <url-pattern> *.phps </url-pattern> </servlet-mapping> </web-app> Tomcat accepts this configuration, if I remove everything except the first <servlet> and <servlet-mapping> section. The second ones are only needed to pretty-print a PHP script's source, so this is not dramatic. Having done all this, I put a simple test.php <?php phpinfo(); ?> into Tomcat/webapps/php, together with the web.xml in this directory's WEB-INF directory. When I access http://localhost:8080/php/test.php, I get this error message: A Servlet Exception Has Occurred Exception Report: javax.servlet.ServletException: Class net.php.servlet is not a Servlet at org.apache.catalina.core.StandardWrapper.load at org.apache.catalina.core.StandardWrapper.allocate at org.apache.catalina.core.StandardWrapperValve.invoke at org.apache.catalina.core.StandardPipeline.invokeNext at org.apache.catalina.core.StandardPipeline.invoke at org.apache.catalina.core.ContainerBase.invoke at org.apache.catalina.core.StandardContextValve.invoke at org.apache.catalina.core.StandardPipeline.invokeNext at org.apache.catalina.core.StandardPipeline.invoke at org.apache.catalina.core.ContainerBase.invoke at org.apache.catalina.core.StandardContext.invoke at org.apache.catalina.core.StandardHostValve.invoke at org.apache.catalina.core.StandardPipeline.invokeNext at org.apache.catalina.valves.AccessLogValve.invoke at org.apache.catalina.core.StandardPipeline.invokeNext at org.apache.catalina.core.StandardPipeline.invoke at org.apache.catalina.core.ContainerBase.invoke at org.apache.catalina.core.StandardEngineValve.invoke at org.apache.catalina.core.StandardPipeline.invokeNext at org.apache.catalina.core.StandardPipeline.invoke at org.apache.catalina.core.ContainerBase.invoke at org.apache.catalina.connector.http.HttpProcessor.process at org.apache.catalina.connector.http.HttpProcessor.run at java.lang.Thread.run(Thread.java:484) Root Cause: java.lang.ClassCastException: net.php.servlet at org.apache.catalina.core.StandardWrapper.load at org.apache.catalina.core.StandardWrapper.allocate at org.apache.catalina.core.StandardWrapperValve.invoke at org.apache.catalina.core.StandardPipeline.invokeNext at org.apache.catalina.core.StandardPipeline.invoke at org.apache.catalina.core.ContainerBase.invoke at org.apache.catalina.core.StandardContextValve.invoke at org.apache.catalina.core.StandardPipeline.invokeNext at org.apache.catalina.core.StandardPipeline.invoke at org.apache.catalina.core.ContainerBase.invoke at org.apache.catalina.core.StandardContext.invoke at org.apache.catalina.core.StandardHostValve.invoke at org.apache.catalina.core.StandardPipeline.invokeNext at org.apache.catalina.valves.AccessLogValve.invoke at org.apache.catalina.core.StandardPipeline.invokeNext at org.apache.catalina.core.StandardPipeline.invoke at org.apache.catalina.core.ContainerBase.invoke at org.apache.catalina.core.StandardEngineValve.invoke at org.apache.catalina.core.StandardPipeline.invokeNext at org.apache.catalina.core.StandardPipeline.invoke at org.apache.catalina.core.ContainerBase.invoke at org.apache.catalina.connector.http.HttpProcessor.process at org.apache.catalina.connector.http.HttpProcessor.run at java.lang.Thread.run(Thread.java:484) Any ideas on what I could be doing wrong here, or what could be amiss with PHP's Java Servlet SAPI, since it's code hasn't changed since its original submission by Sam Ruby last year? Greetings, Sebastian [1] SAPI is PHP 4's server abstraction layer. [2] The next step beeing to use PHP as a generator with Cocoon2. -- Sebastian Bergmann http://sebastian-bergmann.de/ http://phpOpenTracker.de/ Did I help you? Consider a gift: http://wishlist.sebastian-bergmann.de/ -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>