2022年6月15日 星期三

如何讓 tomcat 執行 php

因為某些緣故,需要有個 wordpress 環境,為了方便,所以想說本來電腦就有 tomcat 就看看能不能用 tomcat 直接執行 php。

結果上網查了查,還真的有辦法,在此紀錄一下:

安裝步驟

1. 安裝 tomcat 和下載 php

安裝 tomcat 是廢話,跳過

接下來要下載 php ,我的環境是 windows,所以直接進入 php 的下載頁,選擇 Windows downloads,然後選擇最新的版本下載(選 Zip 下載就好,不要選 Debug Pack或是Development package)

php 下載完,解壓縮後,在 tomcat 的 startup.bat 最前面(我是放在 setlocal 之後)加上以下 code

set PHP_HOME={你解壓縮完 php 的壓縮檔後,解壓縮的資料夾,亦即有 php.exe 的資料夾,例如 D:\php}
path %path%;%PHP_HOME%

後半步驟如果安裝了 php 並且有確定 path 有設置的話就可以跳過

2. 下載PHP/Java Bridge 

為了執行 php ,需要 JavaBridge.jar 和 php-servlet.jar 這兩個檔案。

這兩個檔案都屬於 PHP/Java Bridge 這專案。

下載完後,將之放在 {tomcat 根目錄}/lib 資料夾即可

3. 設定 tomcat

再來是修改 tomcat 設定。

首先將 {tomcat 根目錄}/conf/web.xml 的  <welcome-file-list> 追加以下 node:

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

這段內容的目的是要讓首頁網址追加 index.php ,其實這段非必要,不過方便起見還是加上吧。

再來,同樣是 web.xml,在 <web-app> node,亦即 root node,加上以下這段

<!-- ==================== PHP setting ===================== -->
<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>

加入後就可以讓 tomcat 在執行 web apps 時自動帶入 php 的設定了

參考資料

好记性也要烂笔头,  (2020, July 21). Tomcat下使用php. 簡書. https://www.jianshu.com/p/b54cffc406da

qq_28033719,  (2018, August 18). Tomcat 下运行 php 文件(Windows). CSDN. https://blog.csdn.net/qq_28033719/article/details/80361823

沒有留言:

張貼留言