tomcat+php+mysql环境配置

  • 版本
  • tomcat安装配置
  • tomcat配置php
  • 配置tomcat利用jsp连接mysql
  • 配置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配置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>中添加如下代码:
<!-- ================== 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的路径
<!-- ================ 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的内容为:
<?php
phpinfo();
?>
  • 确保服务已启动,访问 http://localhost:8080/phpbin/index.php 查看效果,正确效果如下:

配置tomcat利用jsp连接mysql

  • 将mysql的jdbc驱动程序放到tomcat的lib中,如:mysql-connector-java-8.0.21.jar
  • ROOT目录下新建connect_mysql.jsp文件,添加如下内容:
<%@ 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>
  • 根据自己mysql情况修改用户名,密码,需要执行的sql语句。
  • 不熟悉JSP语句的可以去菜鸟教程学习。
  • 确保tomcat服务已启动,访问 http://localhost:8080/connect_mysql.jsp 查看效果。

配置tomcat利用php连接mysql

  • 为php添加mysql扩展,在php.ini中搜索定位extension,将下面两行前的;去掉
extension=mysqli
extension=pdo_mysql
  • WEB_INF/phpbin下新建connect_mysql.php文件,并写入以下内容
<?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();
?>
  • 根据自己的情况填入对应的用户名,密码,数据库名和sql语句。
  • 不熟悉php语句的可以去菜鸟教程学习。
  • 确保tomcat服务已启动,访问http://localhost:8080/phpbin/connect_mysql.php 查看效果。

可能遇到的问题解决

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

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

更多推荐

tomcat+php+mysql环境配置