关于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 即可正常访问

相关推荐
万岳软件开发小城2 小时前
医疗陪诊软件源码开发方案解析:预约、派单、陪诊全流程如何实现
php·软件开发·医院陪诊系统源码·陪诊app开发·陪诊软件开发
薛定谔的猫19822 小时前
RAG(四) LangChain 使用PyPDFLoader加载 PDF 并实现内容总结功能
langchain·pdf·php
DeepFlow 零侵扰全栈可观测3 小时前
民生银行云原生业务的 eBPF 可观测性建设实践
运维·开发语言·分布式·云原生·金融·php
寻星探路3 小时前
深度解析网络编程套接字:从 Socket 底层原理到 Java 高性能实战
java·网络·人工智能·python·机器学习·php
BingoGo3 小时前
PHP 异步与多线程 从 TrueAsync 展望未来
后端·php
JaguarJack3 小时前
PHP 异步与多线程 从 TrueAsync 展望未来
后端·php·服务端
郑州光合科技余经理13 小时前
技术架构:上门服务APP海外版源码部署
java·大数据·开发语言·前端·架构·uni-app·php
以太浮标16 小时前
华为eNSP模拟器综合实验之-BGP路由协议的配置解析
服务器·开发语言·php
p66666666681 天前
大小端存储
服务器·网络·php
未来之窗软件服务1 天前
幽冥大陆(九十二 ) 封装 PHP HTTP 请求的 —东方仙盟练气期
开发语言·http·php·仙盟创梦ide·东方仙盟