使用tomcat运行php应用程序?
是否可以使用tomcat运行PHP应用程序 在您告诉我只使用httpd之前,我已经在我的web服务器上运行了一个Java应用程序,位于使用tomcat运行php应用程序?,php,tomcat,apache,Php,Tomcat,Apache,是否可以使用tomcat运行PHP应用程序 在您告诉我只使用httpd之前,我已经在我的web服务器上运行了一个Java应用程序,位于host/myapp。现在我想在主机/RoundCube上安装RoundCube 一个是PHP,一个是Java。我经常看到一些非正式的参考资料说这是可能的,但没有真正的指示。我不想把它们放在单独的端口上,我需要标准的HTTP和HTTPS端口 有人对此有任何资源吗?在Apache后面运行Tomcat是很常见的。在Apache中,您可以将某些URL定向到Tomcat,
host/myapp
。现在我想在主机/RoundCube上安装RoundCube
一个是PHP,一个是Java。我经常看到一些非正式的参考资料说这是可能的,但没有真正的指示。我不想把它们放在单独的端口上,我需要标准的HTTP和HTTPS端口
有人对此有任何资源吗?在Apache后面运行Tomcat是很常见的。在Apache中,您可以将某些URL定向到Tomcat,并让Apache/PHP处理其他URL(包括静态图像)
(在Unix上,Tomcat本身无法安全地运行在端口80上,而Apache可以。Tomcat作为一个Java进程,将被要求以root身份运行,而Apache将在端口80被声明后立即切换到非root权限。因此,在端口80上运行Apache并将部分或所有请求重定向到Tomcat在Unix上非常常见。)Caucho可以在jvm上运行PHP代码 这座桥在那里。这基本上是通过FastCGI运行PHP。我自己也没用过。有点晚了,但我来了 如果您只是想在tomcat上运行真正的php,那又如何呢
关于在端口80上运行tomcat,总是有jsvc,只有google jsvc+tomcat。tomcat被设计为JSP servlet容器。Apache是由PHP web服务器设计的。使用apache作为web服务器,响应PHP请求,并将JSP servlet请求直接发送到tomcat容器。应该更好地实施。是的,这是可能的。我们可以在tomcat服务器中使用自己的端口号localhost:8080运行PHP代码 在这里,我写了一些对你非常有用的步骤 如何在windows中的Tomcat 6上安装或运行PHP
c:\PHP-5.2.6-Win32
-c:\php-5.2.6-Win32
php.ini
中取消注释或添加行(删除开头的分号):
;extension=php\u java.dll
php5servlet.dll
从PECL 5.2.5复制到c:\php-5.2.6-Win32
php\u java.dll
从PECL 5.2.5复制到c:\php-5.2.6-Win32\ext
php\u java.jar
从PECL 5.2.5复制到tomcat\lib
tomcat\webapps
目录中创建一个名为“php”
(或任何你喜欢的)的目录phpsrvlt.jar
从PECL 5.2.5复制到tomcat\webapps\php\WEB-INF\lib
phpsrvlt.jar
用于解压使用winrar或winzip用于Unjar:jar xfv phpsrvlt.jar
net\php\reflect.properties
和net\php\servlet.properties
更改为library=php5servlet
C:\ProgramFiles\Java\jdk1.6.0\bin;至系统变量/路径
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>
php
net.php.servlet
php格式化程序
net.php.formatter
php
*.php
php格式化程序
*.phps
c:\PHP-5.2.6-Win32
)添加到您的系统或用户路径(提示:右键单击并从My Computertest.php
以便在tomcat\webapps\php
下进行测试localhost:8080/php/test.php
如果有人还在看- 有一个war,允许在ApacheTomcat或glassfish中运行PHP脚本
phpservlet.jar
和JavaBridge.jar
webapp/WEB-INF/lib
文件夹中
PhpCGIFilter
php.java.servlet.PhpCGIFilter
PhpCGIFilter
/*
php.java.servlet.ContextLoaderListener
PhpJavaServlet
php.java.servlet.PhpJavaServlet
PhpCGIServlet
php.java.servlet.fastcgi.FastCGIServlet
0
PhpJavaServlet
*.phpjavabridge
PhpCGIServlet
*.php
此文件中可能有其他内容,请确保已在web app标记之间添加了所有内容
你也可以用它做其他特殊的事情。你可以在这里了解更多信息:这绝对是最简单的选择。要从Apache调用Tomcat,你应该看看Apache mod_jk模块。当然,你可以在Unix上的端口80上运行Tomcat,而不必使用root。只需使用iptables将端口80重定向到端口8080。@Kim,我不会将使用iptables归类为在端口80上运行Tomcat,但你是对的:使用Apache不是唯一的选择。(不过,使用Apache确实有其他好处,比如提供静态内容。我的声明“首选”当然有点过于简化。)现在,在Ubuntu10.04中,Tomcat配置了authbind,可以使用1024以下的端口,并且工作得非常好。使用Quercus,您还可以顺利运行一些(大多数)PHP脚本。没错,但是您不需要使用Caucho树脂吗?这非常好。我尝试了解决方案
<?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>