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

相关推荐
VX_bysjlw9857 分钟前
基于PHP的论坛系统设计与实现 35136-计算机毕设原创(免费领源码+带部署教程)
开发语言·php·apache·laravel·thinkphp·phpstudy·wampserver
忆~遂愿9 分钟前
电影照片散在硬盘里不好找?我用群晖+Plex整理成可远程访问的家庭媒体库
开发语言·php
福大大架构师每日一题14 分钟前
agno v3.1.3发布:外部智能体全面进入“可持久化、可恢复、可取消、可回放”时代
服务器·数据库·php
北京中科新远科技13 小时前
高速光模块上线验收实战:DOM、FEC、BER与端口计数器怎么一起看
服务器·网络·php
微三云 - 廖会灵 (私域系统开发)16 小时前
供应链系统实战:多渠道订单聚合与分布式库存一致性方案总结
开发语言·分布式·php
LZ_66617 小时前
php代码执行3(难)
php
盛世宏博北京19 小时前
十二防档案库房总线架构设计:恒湿消毒净化一体机 RS485 组网实战笔记
开发语言·笔记·php·恒湿机·档案八防温湿度
无风听海21 小时前
深入理解.NET中的 Lazy<T>
服务器·php·.net
Evelvnk1 天前
计算机学习资料
开发语言·人工智能·计算机·php
迪康coolmu1 天前
迪康Defender网络准入控制系统落地实战:部署、配置与问题排查记录
运维·开发语言·网络·经验分享·php