php控制器不存在问题

开发者在Linux服务器上遇到ThinkPHP控制器请求错误,发现控制器命名与Windows不同,Windows对大小写不敏感,而在Linux中则需遵循严格的命名规则。解决方法是调整控制器类名和文件名以匹配ThinkPHP的命名约定。
摘要由CSDN通过智能技术生成

今天做项目时发现了一个问题

  • 首先定义了一个这样的控制器,php文件名与类同名
<?php

namespace app\controller;

use app\BaseController;
use think\facade\Db;

class QIndexValue extends BaseController
{
    public function search()
    {
    	//业务代码
        return 'hello';
    }
}

接口url为 /qindex/search
本地调用正常
在这里插入图片描述
但是部署到linux服务器上后却报错了
在这里插入图片描述
说明它按去查找Qindexvalue这个控制器而我的控制器叫做QIndexValue它没找到,也就是大小写问题,于是我把url的qindexvalue改成QIndexValue,就正常请求了
在这里插入图片描述

  • 但是不对呀,查找控制器应该是框架干的事,根操作系统怎么会有关系呢?
    于是我就把类名改成Qindexvalue(因为url的首字母q自动转大写了因此在这也大写),然后再用qindexvalue访问,结果:
    依然报 控制器不存在:app\controller\Qindexvalue
    这就说明查找控制器不是根据类名,那么只能是根据文件名了(为啥不是根据类名呢有知道的大佬可以回答一下嘛),于是我把文件名改成了Qindexvalue.php,果然请求成功了。
  • 那么为什么一开始在windows能运行在linux却报错的原因也就找到了
    就是因为windows对文件名大小写不敏感而linux对文件名大小写敏感。
  • 补充一下,根据thinkphp官方文档,url中控制器是下划线命名的,会转成驼峰而不是按原名称查找,因此一定要注意命名规范
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值