【问题标题】:Run a php app using tomcat?使用tomcat运行一个php应用程序?
【发布时间】:2010-10-21 05:22:42
【问题描述】:

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

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

一个是PHP,一个是Java。我一直看到临时参考说这是可能的,但没有真正的说明。我不想将它们放在单独的端口上,我需要标准的 HTTP 和 HTTPS 端口。

有人有这方面的资源吗?

【问题讨论】:

    标签: php tomcat apache


    【解决方案1】:

    是的,这是可能的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. c:\php-5.2.6-Win32 中将php.ini-dist 重命名为php.ini

    4. php.ini 中取消注释或添加行(删除开头的分号): ;extension=php_java.dll

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

    6. php_java.dllPECL 5.2.5复制到c:\php-5.2.6-Win32\ext

    7. php_java.jarPECL 5.2.5复制到tomcat\lib

    8. tomcat\webapps 目录中创建一个名为"php"(或您喜欢的任何名称)的目录

    9. phpsrvlt.jarPECL 5.2.5复制到tomcat\webapps\php\WEB-INF\lib

    10. 解压或解压 phpsrvlt.jar 用于解压 winrar 或 winzip 用于解压:jar xfv phpsrvlt.jar

    11. net\php\reflect.propertiesnet\php\servlet.properties 都更改为library=php5servlet

    12. 重新创建 jar 文件 -> jar cvf php5srvlt.jar net/php/. PS:如果 jar 文件没有运行,你必须为我添加系统变量的路径,我添加了C:\Program Files\Java\jdk1.6.0\bin; to System variables/Path

    13. 使用此内容在tomcat\webapps\php\WEB-INF 中创建web.xml

      <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>
      
    14. 将 PHP 路径(c:\php-5.2.6-Win32)添加到 Windows 环境中的系统或用户路径(提示:右键单击并从 我的电脑

    15. 中选择属性
    16. 创建test.php 用于在tomcat\webapps\php 下进行测试

    17. 重启tomcat

    18. 浏览localhost:8080/php/test.php

    【讨论】:

    • 这个不错的教程+1。在我添加了一个缺失的步骤之后,它起作用了。缺少的步骤是:将 php_java.jarPECL 5.2.5 复制到 tomcat\lib 目录。
    • 我希望你也可以写 64 位 :)
    • 有人对性能有任何了解吗(与在 apache http 服务器中运行 php 脚本相比)?
    • xmlns定义好像有错别字
    【解决方案2】:

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

    (在 Unix 上,Tomcat 本身不能安全地在 80 端口上运行,而 Apache 可以。Tomcat 是一个 Java 进程,需要以 root 身份运行,而 Apache 将切换到非 root 权限,只要端口80 已被声明。因此,在端口 80 上运行 Apache 并将部分或全部请求重定向到 Tomcat,在 Unix 上很常见。)

    【讨论】:

    • 这绝对是最简单的选择。要从 Apache 调用 Tomcat,您应该查看 Apache mod_jk 模块。
    • 当然你可以在 Unix 的 80 端口上运行 tomcat 而不是 root。只需使用 iptables 将端口 80 重定向到端口 8080。
    • @Kim,我不会将使用 iptables 归类为在端口 80 上运行 Tomcat,但你是对的:使用 Apache 不是唯一的选择。 (不过,使用 Apache 确实有其他好处,比如提供静态内容。我的“首选”声明确实有点过于简单了。)
    • 现在,在 Ubuntu 10.04 中,Tomcat 配置了 authbind 以使用 1024 以下的端口,并且运行良好。使用 Quercus,您还可以顺利运行一些(大多数)PHP 脚本。
    【解决方案3】:

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

    【讨论】:

    • 没错,但你不必使用 Caucho Resin 吗?
    • 效果很好。我尝试了标题为“如何在 Windows 中的 Tomcat 6 上安装或运行 PHP”下提供的解决方案,失败得很惨。
    【解决方案4】:

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

    【讨论】:

    • 没用,这个没用:caucho.com/resin-3.0/quercus。下载了战争文件。放入 webapps 目录,该目录很好地分解了 war 文件。从 tomcat 的 bin 中运行启动,宾果游戏。
    • 对于未来的求职者,与 jdk1.8 tomcat 9 和(php 最新版本)一起工作就好了
    【解决方案5】:

    有点晚了,但是这里。

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

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

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

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

        【讨论】:

        • 我什至不需要写得很好的文章,但确实预览了它。刚拿到战争文件。
        • Quercus 不再开发。它只有 PHP-5。因此,如果您正在寻找运行任何框架,例如正在寻找 PHP-7 的 wordpress,那么这将不起作用。
        【解决方案8】:
        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

        【讨论】:

          猜你喜欢
          • 2017-10-18
          • 2015-02-10
          • 2015-12-30
          • 2016-05-26
          • 1970-01-01
          • 2015-10-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多