Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 代码点火器:常规控制器正常。HMVC控制器不';t工作(未找到页面)_Php_Ajax_Codeigniter_Codeigniter Hmvc - Fatal编程技术网

Php 代码点火器:常规控制器正常。HMVC控制器不';t工作(未找到页面)

Php 代码点火器:常规控制器正常。HMVC控制器不';t工作(未找到页面),php,ajax,codeigniter,codeigniter-hmvc,Php,Ajax,Codeigniter,Codeigniter Hmvc,所以这是一个恼人的问题,有些东西在本地项目上运行得很好,但一旦部署到生产环境中,一切都会中断 在这种情况下,我可以访问由常规codeigniter控制器生成的所有页面(位于应用程序/控制器中)。然而,一旦我尝试访问HMVC模块,我就会得到一个codeigniter 404错误 常规控制器的情况仍然正常: 例如,如果我有一个位于application/controllers/C1.php中的常规控制器C1,它包含函数page(),那么我可以访问www.mysite.com/C1/page而不会出现

所以这是一个恼人的问题,有些东西在本地项目上运行得很好,但一旦部署到生产环境中,一切都会中断

在这种情况下,我可以访问由常规codeigniter控制器生成的所有页面(位于应用程序/控制器中)。然而,一旦我尝试访问HMVC模块,我就会得到一个codeigniter 404错误

常规控制器的情况仍然正常:

例如,如果我有一个位于application/controllers/C1.php中的常规控制器C1,它包含函数page(),那么我可以访问www.mysite.com/C1/page而不会出现问题

访问HMVC控制器的问题:

但是,如果我想通过url www.mysite.com/C2/page访问位于application/modules/C2/controllers/C2.php中的控制器C2,我会得到一个404错误

通过ajax访问常规控制器时出现问题:

第二个问题出现在使用引用常规CI控制器的路径执行ajax调用时。ajax调用中使用的路径似乎无法识别,我收到一个500错误。但是,当直接在URL栏中调用同一路径时,似乎执行了正确的函数。我以前通过应用中找到的解决方案解决了类似的问题。然而,我还没有确定这是否是同一个问题

这感觉像是装载机的问题,但我不是专家

即使这是一个装载机问题,为什么它会在本地工作而不是在生产上

你遇到过这样的事情吗?你对如何解决这个问题有什么想法吗

**编辑3:*我删除了之前的两个编辑,因为它们现在不相关

在激活调试模式并添加一些日志之后,我终于找到了我认为是答案

长话短说,我的本地codeigniter版本在windows上运行,出于某种原因,当试图访问控制器时,该案例被忽略。因此File.php和File.php被认为是相同的

<>我的生产服务器运行Linux,所以它不认为2个不同的文件名指的是同一个文件。所以我要求file.php,服务器回答“没有这样的文件”,因为我真正想要的文件是file.php

我需要上交。我明天再做一些检查后,会提出一个正确的答案

谢谢


Loïc.

与HMVC路线需要类似

$route['something']=“模块/控制器/功能”

$route['something/(:any)]=“模块/控制器/功能/$1”

使用welcome.php的控制器intead时也要确保这样,确保控制器文件名像welcome.php

当使用路由时,如果没有从控制器中删除index.php,则url将是


没有

,因此问题与常规控制器与HMVC控制器无关。基本上,我的本地开发环境是Windows,出于某种原因,Windows决定在命名文件时这种情况并不重要

因此file.php将被视为与file.php相同的名称(请注意,第一个是小写,第二个是大写)

在我的代码中,我试图获取file.php(小写),而实际的文件名为file.php,它在windows上工作

然而,在文明的操作系统中,File.php和File.php被认为是两个不同的名称,这就是为什么在生产中突然出现了一些不起作用的东西,尽管代码是相同的。无法找到控制器文件

我更改了控制器文件的名称(小写),现在一切正常

谢谢大家的建议


Loïc.

请将您的路线粘贴到主邮局thanksHello。在我的本地项目中,即使对于HMVC路由,它们也是正常设置的,没有引用模块(只是控制器/函数)。我尝试按照您在我的生产环境中的建议修改我的路线,但似乎没有任何帮助。