关于ThinkPHP 5 框架开启自动搜索控制器 无法访问的问题坑

假如当前有一个登陆接口功能 因为后续会有不同版本的 登陆接口 这时候 我们可以在控制器中 新建文件夹 做区分 方便管理即 新建了一个 api 模块 文件路径是 api/controller/V1/Login 正常情况下

controller 目录下 是 控制器文件 login.php 文件,由于我们有多个版本就 在控制器下生成了 v1这个目录 里面包含了登陆 login目录 login 目录下 才是控制器文件 login.php ,正常情况下 在没有设置路由的情况下 ,我们就无法通过url链接访问 控制器文件 ,需要通过 config 配置文件 去修改配置内容 controller_auto_search 自动搜索控制器 为 true 即可 通过url访问

http://xxx.xxx.com/api/v1/login/login/index

api 是当前 模块

V1/Login 是当前模块 控制器目录下的文件夹

login 是我们的 login.php 控制器文件

index 是我们 login.php 控制器文件的 index 方法

这时候在windows中即可正常访问

但是我们部署到 linux 时候还是不能运行 报错找不到控制器 文件 或者 404 找不到文件

这就是 windows 和 linux 之间的差异 因为windows 是 不区分大小 然而 linux是 区分大小写的

通过查看框架 原代码

thinkphp\library\think\Route.php 文件夹中 第 1240 行和 1241行

发现 文件路径都会转换成小 所以 把 命名空间 和 文件夹 目录 V1/Login 修改成小写 v1/login 即可正常访问

相关推荐
m0_495562786 小时前
Swift的逃逸闭包
服务器·php·swift
Elastic 中国社区官方博客6 小时前
Observability:适用于 PHP 的 OpenTelemetry:EDOT PHP 加入 OpenTelemetry 项目
大数据·开发语言·人工智能·elasticsearch·搜索引擎·全文检索·php
catchadmin10 小时前
用 LaraDumps 高效调试 PHP 和 Laravel
php·laravel
刘恒12345678915 小时前
PHP中对于(并发/并行)相关概念
php
思茂信息16 小时前
CST License(Flexnet)设置与问题处理方法
服务器·网络·单片机·3d·php·1024程序员节·cst
m0_7381207216 小时前
内网横向靶场——记录一次横向渗透(三)
开发语言·网络·安全·web安全·网络安全·php
无心水18 小时前
【中间件:Redis】2、单线程Redis高并发原理:I/O多路复用+3大优化点(附多线程对比)
redis·中间件·php·后端面试·i/o多路复用·redis原理·redis高并发
万岳软件开发小城19 小时前
在线教育系统源码架构设计指南:高并发场景下的性能优化与数据安全
php·在线教育系统源码·教育平台搭建·教育app开发·教育软件开发
wxin_VXbishe1 天前
springboot在线课堂教学辅助系统-计算机毕业设计源码07741
java·c++·spring boot·python·spring·django·php
苏琢玉1 天前
被问性能后,我封装了这个 PHP 错误上报工具
php·composer