Tomcat+PHP+Mysql环境配置

版本

  • Tomcat 10.0.6
  • PHP 8.0.6
  • Mysql 8.0.21

Tomcat 安装配置

  • 下载tomcat 从tomcat官网下载zip包
  • 解压到自己想要的目录下
  • 使用Tomcat之前需要JDK以及JAVA_HOME环境变量配置
  • 修改conf文件下的logging.properties文件,解决控制台乱码问题
  • 配置tomcat环境变量,将bin目录路径添加到path
  • cmd下执行startup启动服务
  • 浏览器输入localhost:8080,成功启动服务效果如下图:
tomcat初始界面

Tomcat 配置 PHP

  • 官网下载php
  • 将php解压到自己想要的目录下
  • 复制一份php.ini-development,并改名为php.ini
  • 修改php.ini文件
    • 搜索定位到extension_dir= "ext",去掉此行前的;,也可重写并指定ext文件夹的路径
    • 搜索定位到cgi.force_redirect,改为cgi.force_redirect=0
  • 回到tomcat所在目录下,打开conf/context.xml文件
  • <context>标签加上privileged = "true"属性,即修改为<Context privileged="true">
  • 打开web.xml文件,在添加<web-app>中添加如下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!-- ================== Built In Servlet Definitions ==================== -->
<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-cgi.exe的路径,需要根据自己的文件路径进行修改 -->
<param-value>D:\tomcat\php\php-cgi.exe</param-value>
</init-param>
<init-param>
<param-name>passShellEnvironment</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cgiPathPrefix</param-name>
<!-- 此处与后文对应 -->
<param-value>WEB-INF/phpbin</param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>
  • 注意修改php-cgi.exe的路径,路径为自己安装php的路径
1
2
3
4
5
<!-- ================ Built In Servlet Mappings ========================= -->
<servlet-mapping>
<servlet-name>php</servlet-name>
<url-pattern>/phpbin/*</url-pattern>
</servlet-mapping>
  • 重启服务
  • 由于上面在web.xml中添加了<param-value>WEB-INF/phpbin</param-value>,因此在WEB-INF下新建phpbin文件夹,并新建index.php作为测试。
  • index.php的内容为:
1
2
3
<?php
phpinfo();
?>
php验证

配置 Tomcat 利用 jsp 连接 Mysql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>My JSP starting page</title>
</head>

<body>
<span>
<%
try {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//URL指向要访问的数据库名
String url = "jdbc:mysql://127.0.0.1:3306/enwords?serverTimezone=UTC";
//用户名
String user="***";
//密码
String password="***";
//建立连接
Connection con=DriverManager.getConnection(url,user,password);
//创建状态
Statement state=con.createStatement();
//3.要执行的sql语句,需要读者自行修改
String sql="select * from enwords limit 100,120;";
//4.ResultSet类,用来存放获取的结果集!!
ResultSet rs=state.executeQuery(sql);

String word=null;
String translation=null;
String aString="";
//读者请根据自己的数据库表修改打印内容。
while(rs.next()){
word=rs.getString("word");
translation=rs.getString("translation");
aString+=word+"\t"+translation+"<br>"
+"----------------------------<br>";
}
out.println(aString);
state.close();
con.close();

} catch (Exception e) {
e.printStackTrace();
}
%>
</span>
</body>
</html>

配置 Tomcat 利用 PHP 连接 Mysql

  • 为php添加mysql扩展,在php.ini中搜索定位extension,将下面两行前的;去掉
1
2
extension=mysqli
extension=pdo_mysql
  • WEB_INF/phpbin下新建connect_mysql.php文件,并写入以下内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
$servername = "localhost";
$username = "***"; //用户名
$password = "***"; //密码
$dbname = "***"; //数据库名

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检测连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
//sql语句,读者根据自己的数据库和表修改语句。
$sql = "select * from enwords limit 0,100";

$result = $conn->query($sql);

echo "-------------------------------<br>";
if ($result->num_rows > 0) {
// 输出数据,请读者根据自己的表和打印要求进行修改。
echo "<strong>word&nbsp&nbsp&nbsp&nbsp&nbsptranslation</strong><br>";
while($row = $result->fetch_assoc()) {
echo $row["word"]. "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp" .
$row["translation"] . "<br>";
echo "-------------------------------<br>";
}
} else {
echo "0 结果";
}
$conn->close();
?>

可能遇到的问题解决

  • 如果php连接mysql出现The server requested authentication method unknown to the client报错
  • cmd下登录数据库,执行如下语句修改密码。
1
2
3
4
5

mysql -uroot -p

use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';

Tomcat+PHP+Mysql环境配置
https://hwh-2019.github.io/2022/11/18/Tomcat-PHP-Mysql环境配置/
作者
HWH
发布于
2022年11月18日
许可协议