Tomcat6 与 PHP5.3的整合

5 6 月

今天想给ACM团队建立一个博客,但是OJ是架在Tomcat上的,所以,就想要整合tomcat与php,让php5在Tomcat6上运行。
准备工具
1、php5.3.6 下载地址:http://windows.php.net/downloads/releases/php-5.3.6-Win32-VC9-x86.zip
2、Tomcat6.0.13(由于当时OJ用这个搭建的,就没改了)
3、PHP/Java Bridge 下载地址:http://sourceforge.net/projects/php-java-bridge/files/Binary%20package/php-java-bridge_6.2.1/php-java-bridge_6.2.1_documentation.zip/download
开始
1、将php5.3.6解压到C:\PHP,一定保证目录中有php-cgi.exe。
2、将C:\PHP\php.ini-production复制一份到C:\PHP\php.ini
3、编辑php.ini,并启用你要的模块
4、复制php.ini到C:\Windows目录
5、将C:\PHP\ext目录的文件复制到C:\PHP(可能需要复制到C:\Windows,我之前就做了,后面懒得测试了。)
6、将C:\PHP添加到系统环境变量
7、解压Tomcat到C:\Tomcat
8、打开php-java-bridge_6.2.1_documentation.zip,并解压其中JavaBridge.war文件,从WEB-INF\lib文件夹中复制php-servlet.jar、php-script.jar、JavaBridge.jar到C:\Tomcat\lib文件
9、编辑C:\Tomcat\conf\web.xml,并在web-app节点中添加


<listener><listener-class>php.java.servlet.ContextLoaderListener</listener-class></listener>
<servlet><servlet-name>PhpJavaServlet</servlet-name><servlet-class>php.java.servlet.PhpJavaServlet</servlet-class>
</servlet>
<servlet><servlet-name>PhpCGIServlet</servlet-name><servlet-class>php.java.servlet.fastcgi.FastCGIServlet</servlet-class>
<init-param><param-name>prefer_system_php_exec</param-name><param-value>On</param-value></init-param>
<init-param><param-name>php_include_java</param-name><param-value>Off</param-value></init-param>
</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>

10、这点我不是很确定,因为我记得没有做过,但是,却发现了,有可能是它自动生成的。
将JavaBridge.war中的WEB-INF\cgi目录解压到C:\Tomcat\webapps\ROOT\WEB-INF

11、在C:\Tomcat\webapps\ROOT\下建立info.php文件,输入

12、启动Tomcat服务器
13、在浏览器中输入http://localhost:8080/info.php,如果能看到php信息就说明你成功了。

PS:
这次走了很多弯路,由于机子是在内网中,外网访问做了个端口转发,而本机是80端口,外面是8084端口,导致,这里php的$_SERVER信息居然是80端口,也就导致了我WordPress安装成功,运行失败的结果,搞的我以为是没配好,后来安装了emlog,并设置好端口后解决。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注