问题遇到的现象和发生背景
初学者学习thinkphp 使用的集成环境是phpstudy_pro 到隐藏入口路径这一直出现错误
问题相关代码,请勿粘贴截图
入口文件
<?php
$pathinfo = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '' ; //获取index.php路径后面的路径 并判断是否为空
echo $pathinfo;
$route = [
'student' => 'studentudent/index',
'login' => 'index/user/login'
];
$arr = explode('/', trim($pathinfo, '/')); //以分号分割pathinfo路径 并去掉前后的/
var_dump($arr);
if(!isset($arr[2])) { //判断路径是否是完整的
exit('请求信息有误');
}
list($model, $controller, $action) = $arr; //分割好的值分别赋给model controller view
define('MODEL_PATH', './' . $model . '/'); //定义模块路径为常量 路径就在当前模块下面加下model
$controller_name = ucwords($controller) . 'Controller'; //把StudentController值赋给$controller_name
require MODEL_PATH . 'Controller/' . $controller_name . '.php'; //获取student文件下的StudentController.php
$student = new $controller_name();
$student->$action();
?>
controller:
<?php
class StudentController
{
public function index()
{
require MODEL_PATH . 'model/StudentModel.php';
$model = new StudentModel;
$data = $model->getAll();
require MODEL_PATH . 'viewudent.html';
}
}
?>
model:
<?php
class StudentModel
{
protected $link;
public function __construct()
{
$this->link = new mysqli('localhost', '123', '000000', 'mytp');
$this->link->set_charset('utf8');
}
public function getAll()
{
$sql = 'SELECT * FROM `student`';
$res = $this->link->query($sql);
return $res->fetch_all(MYSQLI_ASSOC);
}
}
?>
view:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<table>
<tr>
<th>编号</th>
<th>姓名</th>
<th>性别</th>
</tr>
<?php foreach($data as $row): ?>
<tr>
<td><?=$row['id']?></td>
<td><?=$row['name']?></td>
<td><?=['男', '女'][$row['gender']]?></td>
</tr>
<?php endforeach; ?>
</table>
</body>
</html>
.htaccess
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
//添加?与不添加都尝试过 百度好多版本也都尝试过
</IfModule>
路径:
httpd.conf:
运行结果及报错内容
我的解答思路和尝试过的方法
尝试过更换htaccess文件内容
我想要达到的结果
应该如下图所示: