【问题标题】:CodeIgniter Extended Core ControllerCodeIgniter 扩展核心控制器
【发布时间】:2013-06-03 14:01:28
【问题描述】:

我被这个难住了。

在本地 WAMP 服务器上设置我的 CodeIgniter 应用程序后,一切正常。我所有的类都扩展了我的控制器(MY_Controller)

但是,当应用程序在基于 Linux 的实时环境中时,它会抛出一个错误,即 MY_Controller 类不存在。

我是否忘记了某处的配置变量或类似应用程序/核心文件夹路径的东西?

我在 Google 上查找了具有相同问题的其他线程,找到了一个适用于大多数人的解决方案,即使用 parent::Controller(); 而不是 parent::__construct(),但这并不能解决我的问题。

【问题讨论】:

  • 您确定您的控制器已正确放置在应用程序/核心中,并具有正确的文件名、类名和扩展语句吗?
  • 是的,它位于正确的文件夹、正确的文件名 (MY_Controller.php) 和类名 (MY_Controller) 中,并且在本地 WAMP 服务器上工作正常,代码完全相同(减去一些配置常量)在基于 linux 的服务器上返回此错误。我通过在所有控制器中包含核心控制器暂时解决了这个问题,但这并不理想。
  • 那得好好想想这个。它应该工作......另外, parent::Controller();是 parent::__construct() 的别名,afaik。它不应该影响功能。

标签: php codeigniter codeigniter-2


【解决方案1】:

是否可能是文件名的大小写不正确(例如:My_controller 而不是 My_Controller)并且您的在线环境区分大小写而您的本地环境不区分大小写。我经常遇到这个问题

【讨论】:

  • 哦,是的,我想你成功了。 WAMP 是基于 Windows 的,对吧?所以它不会关心你使用什么文件名大小写。
  • 可能是这样 - 但是,我的标准控制器具有小写文件名和大写类名(例如 firstcontroller.php 是 FirstController 类),那么为什么这只影响核心控制器?
  • 不,如果您在上面的评论中写下的名称与项目中的名称完全相同,那么您是对的。
  • 因为文件名不是小写的(MY_Controller.php)?只是一个想法,通常当我在网上有错误但不是在本地时,这与区分大小写有关
  • 案例并不能解决问题
【解决方案2】:

很抱歉复活了一个旧帖子,但这个问题不久前困扰着我。

我想我会添加这个链接:codeigniter MY_Controller not found

以防万一有一个可怜的人把头撞在桌子上,而他们以前没有遇到过上面的帖子。

感谢 Maxime Morin 和 Phil Sturgeon:

function __autoload($class)
{
    if (strpos($class, 'CI_') !== 0)
    {
        if (file_exists($file = APPPATH . 'core/' . $class . EXT))
        {
            include $file;
        }
    }
} 

【讨论】:

    猜你喜欢
    • 2015-01-09
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多