0

*编辑得更清楚

我在两种环境中部署带有模块化扩展 (HMVC) 的 CI 2.0.3,一种是用于开发的 Windows,另一种是用于生产的 Linux。两种环境都具有相同的文件夹和文件结构。目前我遇到了问题。

按照手册将模块化扩展集成到 CI 之后。我做的第一件事是将 CI 附带的默认 Welcome MVC 移动到 Modular Extensions HMVC。两个环境都成功移动,可以在浏览器上查看。

但是当我创建其他模块时,它适用于 Windows 环境,但不适用于 Linux。在 Windows 上,当我调用模块时,浏览器会按预期显示页面。但在 Linux 上,它只显示白色的空白页。甚至没有 404 错误页面,这意味着它不是一个损坏的链接。

谁能告诉我 CI 出了什么问题?

目录结构

/application
-/cache
-/config
-/controllers
-/core
--MY_Loader.php
--MY_Router.php
-/errors
-/helpers
-/hooks
-/language
--/english
-/libraries
-/logs
-/models
-/modules
--/csv_game_credit
---/controllers
----csv_game_credit.php
---/models
----csv_game_credit_db.php
---/views
----welcome_message.php
--/welcome
---/controllers
----welcome.php
---/views
----welcome_message.php
-/third_party
--/MX
--Base.php
--Ci.php
--Config.php
--Controller.php
--Lang.php
--Loader.php
--Modules.php
--Router.php
-/views

欢迎控制器

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Welcome extends CI_Controller {

    public function index()
    {
        $this->load->view('welcome_message');
    }
}

csv_game_credit 控制器

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Csv_game_credit extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->model('Csv_game_credit_db');

        $this->load->dbutil();
        $this->load->helper('file');
    }

    public function index()
    {
        $this->load->view('welcome_message');
    }

}

这与Linux的文件夹权限有关吗?我将尝试将文件夹权限更改为 777 并更新你们

之前谢谢

4

2 回答 2

2

You need to extend MX_Controller not CI_Controller

于 2012-10-12T19:41:05.163 回答
0

如果您使用的是来自wiredesignz的HMVC 扩展,您需要验证您是否将MX文件夹放入文件夹中,application/third_party并且将MY_Loader.phpandMY_Router.php放入application/core文件夹中。

验证后,在文件夹 ('application/modules`) 中创建文件modulesapplication

现在,这个解决方案有点棘手的是,当您不想创建模块时,默认控制器必须与模块命名相同 - 配置中指定的默认控制器名称不适用于此处。

这意味着如果您创建一个名为“mymodule”的模块,您应该创建一个文件夹/文件结构,如下所示:

application/modules/mymodule
- /controllers
- - mymodule.php
- /views
- - whatever.php

在控制器中,application/modules/mymodule/controllers/mymodule.php您只需像往常一样创建一个控制器:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Mymodule extends CI_Controller {

  public function index()
  {
    $this->load->view('whatever');
  }

}
于 2011-12-06T21:13:00.417 回答