2

这要了我的命

我有什么?CI 版本:2.1.4 模块化扩展-wiredesignz 的 HMVC 是一个基本的 codeigniter(hmvc) 项目,它在本地服务器 (mamp) 中使用 php 5.5.3 的设置可以正常工作

我将项目移动到公共网络服务器后的问题我更改了以下内容。——application/config/config.php

$config['base_url'] = ' http://example.com/ ';

——application/config/database.php

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'newdbusername';
$db['default']['password'] = 'newdbpassword';
$db['default']['database'] = 'newdbname'; 

——public_html/.htaccess

RewriteEngine On
RewriteBase /

#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

#When your application folder isn't in the system folder
#This snippet prevents user access to the application folder
#Submitted by: Fabdrol
#Rename 'application' to your applications folder name.
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

#Checks to 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]    
# If we don't have mod_rewrite installed, all 404's 
# can be sent to index.php, and everything works as normal. 
# Submitted by: ElliotHaughin

ErrorDocument 404 /index.php

因为我的索引页面将是“home”模块的索引功能,所以我没有触及 application/config 文件夹中的 routes.php 文件。以下是 routes.php 的设置

$route['default_controller'] = "home";
$route['404_override'] = ''; 

每当尝试访问http://example.com/时,我都会收到以下消息

404 Page Not Found 找不到您请求的页面。

如果我尝试 example.com/home,我会收到相同的消息,但 example.com/welcome 仍然欢迎来到 codeigniter 页面

到底是怎么回事!!!???为什么我不能从模块访问我的任何页面?我错过了什么?还有人遇到这个问题吗??

ps:如果有帮助,我的 cpanel 有 php 5.3.27

更新:: 下面是我的默认控制器的索引函数

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

class Home extends MX_Controller
{

function __construct() {
parent::__construct();
}
function index()
{
    $this->load->library('recaptcha');
    $data['recaptcha_html'] = $this->recaptcha->recaptcha_get_html();
    $data['view_file'] = "checkmember"; 
    $this->load->module('templates');
    $this->templates->checkinfo();
}

=============

更新 2

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

class Welcome extends CI_Controller {

    /**
     * Index Page for this controller.
     *
     * Maps to the following URL
     *      http://example.com/index.php/welcome
     *  - or -  
     *      http://example.com/index.php/welcome/index
     *  - or -
     * Since this controller is set as the default controller in 
     * config/routes.php, it's displayed at http://example.com/
     *
     * So any other public methods not prefixed with an underscore will
     * map to /index.php/welcome/<method_name>
     * @see http://codeigniter.com/user_guide/general/urls.html
     */
    public function index()
    {
        $this->load->view('welcome_message');
    }
}

/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */
4

4 回答 4

7

我认为问题不在于 HMVC,而在于 codeigniter 3.0 版。当涉及到 unix(这是在我的服务器上运行的操作系统)时,它是区分大小写的。因此,当我尝试访问控制器时,由于区分大小写,它找不到文件,并且每次都会弹出 404。

我之前的文件夹结构是这样的:

-application
-->modules
--->users
---->controllers
----->users.php

我得到 404 的链接是 www.example.com/users/login

其中,链接中的“users”是“modules”文件夹下“controllers”文件夹中控制器的名称,在我的例子中名为 users.php,“login”是控制器内的函数。

我所要做的就是改变我的模块和控制器名称的第一个字母的大小写。现在我的目录看起来像

-application
-->modules
--->Users
---->controllers
----->Users.php

注意:用户模块和用户控制器中的大写“U”。

我用来访问用户控制器的网址是:www.example.com/Users/login

我很高兴去。

于 2015-05-11T05:37:30.693 回答
1

终于问题解决了。这是我在模块文件夹中的文件夹结构。

—模块/

- - -/家

—————————/控制器——->home.php

—————————/模型——->mdl_home.php

—————————/Views——->viewfile.php

我所要做的就是更改“Controllers”、“Models”和“Views”文件夹的大小写,然后我就重新开始工作了。

现在文件夹结构是这样的,它工作得很好

—模块/

- - -/家

—————————/控制器——->home.php

—————————/models——->mdl_home.php

—————————/views——->viewfile.php

阿什什

于 2014-02-04T07:14:21.557 回答
1

我有同样的问题。当我将文件夹“控制器”和“视图”重命名为小写时,它起作用了。Linux Debian。

在此处输入图像描述

于 2016-08-15T12:25:30.933 回答
0

我解决了我的问题,因为目录和文件结构正常工作。服务器端的类名和文件名应以大写字母开头,如下所示

-modules
---/login
-----/controllers
---------/Login.php
-----/models
---------/Login_model.php
-----/views
---------/login.php
于 2018-01-23T10:30:07.410 回答