Tomcat下使用php

寫在前面:我們的云服務(wù)器最早使用的框架是tomcat+jsp,前輩們的web都是jsp完成的,js很強(qiáng)但新手入門難,個(gè)人感覺php對(duì)新手來說入門快。所以我想在tomcat下用php寫一個(gè)新的web,這樣就可以和之前的jsp站點(diǎn)共用tomcat!之后各種搜索,終于可以tomcat+php完成自己的web,分享給電腦前的凌亂的小伙伴們。


1. 安裝php環(huán)境

雖然可以在tomcat運(yùn)行php項(xiàng)目,但是不代表不用配置php環(huán)境,所以第一步要做的是安裝php環(huán)境。目前普遍的是使用apache+php+mysql組成一個(gè)php項(xiàng)目的開發(fā),可以分別針對(duì)安裝。

Php的安裝主要分為windows和Linux下安裝(這些不多說,之前百度搜的安裝過程,現(xiàn)在忘了,大家可以百度搜下)

2. 配置tomcat支持php項(xiàng)目

四個(gè)jar包放到tomcat的lib文件中(百度可以下載到,我這也有):JavaBridge.jar, script-api.jar, php-servlet.jar, php-script.jar;

接著我們需要配置web.xml,它在tomcat的conf目錄下,我們?cè)?lt;web-app>節(jié)點(diǎn)中加入一下內(nèi)容:


<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>


然后找到<welcome-file-list>節(jié)點(diǎn),添加以下歡迎內(nèi)容:

<welcome-file>index.php</welcome-file>


重啟tomcat,新建test.php測(cè)試


(我的本地tomcat是8080端口,顯示這樣表明tomcat可以運(yùn)行php項(xiàng)目了)


不過上述方式后來發(fā)現(xiàn)一個(gè)問題,云服務(wù)器搜索.php文件的時(shí)候不分站點(diǎn),例localhost/AAA/demo.php居然用?localhost/demo.php就能訪問,這就不利用編輯新的網(wǎng)站了。換換換?。。?!


第二種方式:

把上述的web.xml的修改刪除掉,替換下面內(nèi)容,其它不更改。在 Tomcat / conf / 找 web.xml,添加:

<!-- 嘗試成功 -->

<servlet>

? ? <servlet-name>php</servlet-name>

? ? <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>

? ? <init-param>

? ? ? ? <param-name>clientInputTimeout</param-name>

? ? ? ? <param-value>200</param-value>

? ? </init-param>

? ? <init-param>

? ? ? ? <param-name>debug</param-name>

? ? ? ? <param-value>0</param-value>

? ? </init-param>

? ? <init-param>

? ? ? ? <param-name>executable</param-name>

? ? ? ? <!-- 這里是放置你的 php/php-cgi.exe -->

? ? ? ? <param-value>E:\app\php-7.4.7-Win32-vc15-x64\php-cgi.exe</param-value>

? ? </init-param>

? ? <init-param>

? ? ? ? <param-name>passShellEnvironment</param-name>

? ? ? ? <param-value>true</param-value>

? ? </init-param>

? ? <!-- 指定攔截前綴,可用可不用,使用之后URL需要帶上 前綴 + 原訪問路徑 -->

? ? <!--

<init-param>

? <param-name>cgiPathPrefix</param-name>

? <param-value>WEB-INF/mibew</param-value>

? ? </init-param>

? ? -->

? ? <load-on-startup>5</load-on-startup>

</servlet>

<servlet-mapping>

? ? <servlet-name>php</servlet-name>

? ? <url-pattern>*.php</url-pattern>

</servlet-mapping>

如果是linux系統(tǒng)需要把路徑改為php-cgi的位置,我的是在/usr/bin/php-cgi;

還需要修改 TOMCAT / conf / context.xml ;在 Context 節(jié)點(diǎn)下添加 privileged="true",這樣能訪問你剛剛添加的<servlet>;




命途多舛,又遇到新的問題了,訪問php文件除了新問題,這個(gè)百度一下就可以解決了:進(jìn)入php目錄,修改php.ini ,將 ;cgi.force_redirect = 1 修改為 cgi.force_redirect = 0。


ok!一切又好使了,現(xiàn)在可以分站點(diǎn)訪問php了,現(xiàn)在感覺清楚多了。

參考鏈接:

https://blog.csdn.net/qq_28033719/article/details/80361823

https://blog.csdn.net/changingshow/article/details/78040134

分享給大家,有問題請(qǐng)私信和評(píng)論區(qū)!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容