Codeigniter类和文件名区分大小写在Linux(centos)

Dam*_*mon 2 php linux codeigniter

我遇到了一个区分大小写的问题,我无法绕过它.

这就是我的文件结构.我只是进入了我正在使用的目录,但实际上我正在使用CI3的完整安装.

/application
    ....
    /controllers/
        application_controller.php
    /core/
        MY_Controller.php
        Public_controller.php
    ....
    /models/
        Application_model.php
    ....
Run Code Online (Sandbox Code Playgroud)

以下是类定义语法的样子:

/application/core/My_Controller.php

class MY_Controller extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
    }
}
Run Code Online (Sandbox Code Playgroud)

/application/core/Public_Controller.php

class Public_Controller extends MY_Controller
{
    function __construct()
    {
        parent::__construct();
    }

    // Application logic here...
}
Run Code Online (Sandbox Code Playgroud)

/application/controllers/application_controller.php

class Application_controller extends Public_Controller
{

    public function __construct()
    {
        parent::__construct();
    }

    // Application logic here...
}
Run Code Online (Sandbox Code Playgroud)

阅读文档,我看到我应该将我的类命名为:

Foo_Controller.php
Run Code Online (Sandbox Code Playgroud)

然后我总是(认为)类定义应该与文件名匹配.所以:

class Foo_Controller extends Bar_Controller {
    ....
}
Run Code Online (Sandbox Code Playgroud)

然后我得到500错误,或者我没有错误,并且有一个白页.当我在本地工作(mac)时,一切都很完美.截至目前(使用上面的语法)我至少得到了默认的codeigniter 404页面.使用时

error_log(__FILE__); 
Run Code Online (Sandbox Code Playgroud)

在每节课的顶部,我所要做的就是 My_Controller.php

谢谢你的任何建议!

Sha*_*lam 7

Codeigniter 更改日志

更改了filenaming约定(类文件名现在必须是Ucfirst,其他所有内容都是小写的).

所以你的控制器和文件名应该是

  • My_controller(仅M大写小写休息小写)
  • Public_controller
  • Application_controller
  • Foo_controller

我本人不喜欢新的命名惯例CI-2在这种情况下更好.

注意:

控制器名称Public_Controller(C大写)和文件名Public_controller.php可能有效,但我更喜欢保持两个名称相同,因此控制器名称应该是Public_controller.