是否可以使用tomcat运行PHP应用程序?
在你告诉我只使用httpd之前,我已经在host/myapp
的网络服务器上运行了一个Java应用程序。现在我想在host / roundcube上安装RoundCube。
一个是PHP,一个是Java。我一直看到随便的引用说这是可能的,但没有真正的指示。我不想把它们放在不同的端口上,我需要标准的HTTP和HTTPS端口。
有没有人有这方面的资源?
答案 0 :(得分:44)
是的,这是可能的Will Den。我们可以使用它自己的端口号localhost:8080
在tomcat服务器中运行PHP代码这里我正在写一些对你有用的步骤。
如何在Windows中的Tomcat 6上安装或运行PHP
下载并将PHP 5解压缩到一个目录c:\php-5.2.6-Win32
- php-5.2.9-2-Win32.zip Download
下载 PECL 5.2.5 Win32 二进制文件 - PECL 5.2.5 Win32 Download
在php.ini-dist
php.ini
重命名为c:\php-5.2.6-Win32
在php.ini
中取消注释或添加行(在开头删除分号):
;extension=php_java.dll
将php5servlet.dll
从PECL 5.2.5复制到c:\php-5.2.6-Win32
将{{1>}从 PECL 5.2.5 复制到php_java.dll
将{{1>}从 PECL 5.2.5 复制到c:\php-5.2.6-Win32\ext
在php_java.jar
目录中创建名为tomcat\lib
(或任何你喜欢的)的目录
将{{1>}从 PECL 5.2.5 复制到"php"
解压缩或解压缩tomcat\webapps
以解压缩使用winrar或winzip进行解锁:phpsrvlt.jar
将tomcat\webapps\php\WEB-INF\lib
和phpsrvlt.jar
更改为jar xfv phpsrvlt.jar
重新创建jar文件
- > jar cvf php5srvlt.jar net / php / 。
PS:如果jar文件没有运行,你必须为我添加路径到系统变量我添加了net\php\reflect.properties
使用以下内容在net\php\servlet.properties
中创建library=php5servlet
:
C:\Program Files\Java\jdk1.6.0\bin; to System variables/Path
将PHP路径(web.xml
)添加到Windows enironment中的系统或用户路径(提示:右键单击并从我的电脑中选择属性
创建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>
下进行测试
重启tomcat
浏览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)
答案 7 :(得分:1)
php-servlet.jar
和JavaBridge.jar
webapp/WEB-INF/lib
文件夹中好
<?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标签之间添加了所有内容。
您也可以与此同时做其他特殊的事情。您可以在此处了解更多信息:http://php-java-bridge.sourceforge.net/pjb/how_it_works.php