使用tomcat运行php应用程序?

时间:2009-04-22 21:11:51

标签: php tomcat apache

是否可以使用tomcat运行PHP应用程序?

在你告诉我只使用httpd之前,我已经在host/myapp的网络服务器上运行了一个Java应用程序。现在我想在host / roundcube上安装RoundCube。

一个是PHP,一个是Java。我一直看到随便的引用说这是可能的,但没有真正的指示。我不想把它们放在不同的端口上,我需要标准的HTTP和HTTPS端口。

有没有人有这方面的资源?

8 个答案:

答案 0 :(得分:44)

是的,这是可能的Will Den。我们可以使用它自己的端口号localhost:8080

在tomcat服务器中运行PHP代码

这里我正在写一些对你有用的步骤。

如何在Windows中的Tomcat 6上安装或运行PHP

  1. 下载并将PHP 5解压缩到一个目录c:\php-5.2.6-Win32 - php-5.2.9-2-Win32.zip Download

  2. 下载 PECL 5.2.5 Win32 二进制文件 - PECL 5.2.5 Win32 Download

  3. php.ini-dist

  4. 中将php.ini重命名为c:\php-5.2.6-Win32
  5. php.ini中取消注释或添加行(在开头删除分号): ;extension=php_java.dll

  6. php5servlet.dll从PECL 5.2.5复制到c:\php-5.2.6-Win32

  7. 将{{1>}从 PECL 5.2.5 复制到php_java.dll

  8. 将{{1>}从 PECL 5.2.5 复制到c:\php-5.2.6-Win32\ext

  9. php_java.jar目录中创建名为tomcat\lib(或任何你喜欢的)的目录

  10. 将{{1>}从 PECL 5.2.5 复制到"php"

  11. 解压缩或解压缩tomcat\webapps以解压缩使用winrar或winzip进行解锁:phpsrvlt.jar

  12. tomcat\webapps\php\WEB-INF\libphpsrvlt.jar更改为jar xfv phpsrvlt.jar

  13. 重新创建jar文件 - > jar cvf php5srvlt.jar net / php / PS:如果jar文件没有运行,你必须为我添加路径到系统变量我添加了net\php\reflect.properties

  14. 使用以下内容在net\php\servlet.properties中创建library=php5servlet

    C:\Program Files\Java\jdk1.6.0\bin; to System variables/Path
  15. 将PHP路径(web.xml)添加到Windows enironment中的系统或用户路径(提示:右键单击并从我的电脑中选择属性

  16. 创建tomcat\webapps\php\WEB-INF以便在<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance " xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd "> <servlet> <servlet-name>php</servlet-name> <servlet-class>net.php.servlet</servlet-class> </servlet> <servlet> <servlet-name>php-formatter</servlet-name> <servlet-class>net.php.formatter</servlet-class> </servlet> <servlet-mapping> <servlet-name>php</servlet-name> <url-pattern>*.php</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>php-formatter</servlet-name> <url-pattern>*.phps</url-pattern> </servlet-mapping> </web-app> 下进行测试

  17. 重启tomcat

  18. 浏览c:\php-5.2.6-Win32

答案 1 :(得分:31)

在Apache之后运行Tomcat是很常见的。在Apache中,您可以将某些URL定向到Tomcat,并让Apache / PHP处理其他URL(包括静态图像)。

(在Unix上,Tomcat本身无法安全地在端口80上运行,而Apache可以。作为Java进程的Tomcat将需要以root身份运行,而Apache将尽快切换到非root权限因此,在端口80上运行Apache并将其部分或全部请求重定向到Tomcat,在Unix上很常见。)

答案 2 :(得分:7)

Caucho Quercus可以在jvm上运行PHP代码。

答案 3 :(得分:6)

有点晚了,但到了。

如果你只想在tomcat上运行真正的php,那么http://wiki.apache.org/tomcat/UsingPhp怎么样。

关于在端口80上运行tomcat,总是有jsvc,只是google jsvc + tomcat。

答案 4 :(得分:5)

有这个PHP/Java桥。这基本上是通过FastCGI运行PHP。我自己没有用过。

答案 5 :(得分:3)

tomcat被设计为JSP servlet容器。 Apache是​​设计PHP Web服务器的。使用apache作为Web服务器,响应PHP请求,并将JSP servlet请求定向到tomcat容器。应该更好地实施。

答案 6 :(得分:3)

如果有人还在寻找 - Quercus有一个允许在apache tomcat或glassfish中运行PHP脚本的战争。有关分步指南,请查看this文章

答案 7 :(得分:1)

  1. 确保服务器上已安装php
  2. sourceforge找到最新版本的php-java-bridge
  3. 从Sourceforge的分解目录中,下载php-servlet.jarJavaBridge.jar
  4. 将这些jar文件放入项目的webapp/WEB-INF/lib文件夹中
  5. 编辑webapp / WEB-INF / web.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
   <filter>
      <filter-name>PhpCGIFilter</filter-name>
      <filter-class>php.java.servlet.PhpCGIFilter</filter-class>
   </filter>
   <filter-mapping>
      <filter-name>PhpCGIFilter</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>
   <!-- the following adds the JSR223 listener. Remove it if you don't want to use the JSR223 API -->
   <listener>
      <listener-class>php.java.servlet.ContextLoaderListener</listener-class>
   </listener>
   <!-- the back end for external (console, Apache/IIS-) PHP scripts; remove it if you don't need this -->
   <servlet>
      <servlet-name>PhpJavaServlet</servlet-name>
      <servlet-class>php.java.servlet.PhpJavaServlet</servlet-class>
   </servlet>
   <!-- runs PHP scripts in this web app; remove it if you don't need this -->
   <servlet>
      <servlet-name>PhpCGIServlet</servlet-name>
      <servlet-class>php.java.servlet.fastcgi.FastCGIServlet</servlet-class>
      <load-on-startup>0</load-on-startup>
   </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>

此文件中可能还包含其他内容,只需确保已在web-app标签之间添加了所有内容。

  1. 将您的php文件添加到webapp目录

您也可以与此同时做其他特殊的事情。您可以在此处了解更多信息:http://php-java-bridge.sourceforge.net/pjb/how_it_works.php