HMVC codeigniter works on local server but not on

2020-03-26 13:35发布

this is killing me

what do i have? CI version: 2.1.4 Modular Extensions - HMVC by wiredesignz a basic codeigniter(hmvc) project that works fine with the setting it has in local server(mamp) with php 5.5.3

my problem after i move the project to public web server i changed the following things. ——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

since my index page will be the index function of ‘home’ module, i have not touched routes.php file in application/config folder. below is the settings for routes.php

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

THE PROBLEM whenever try to access http://example.com/ i get the message below

404 Page Not Found The page you requested was not found.

i get same message if i try example.com/home but example.com/welcome still gives welcome to codeigniter page

WHAT IS GOING ON!!!??? why cant i access any of my page from modules?? what have i missed?? is anyone else getting this problem??

ps: my cpanel has php 5.3.27 if that helps

Update:: below is my default controller's index function

<?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();
}

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

UPDATE 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条回答
Evening l夕情丶
2楼-- · 2020-03-26 13:52

Finally the problem was solved. this was my folder structure in modules folder.

—modules/

—————/home

————————/Controllers——->home.php

————————/Models——->mdl_home.php

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

all i had to do was change the capitalization on “Controllers”, “Models” and “Views” folders and i was back in business.

now the folder structure is like this and its working perfectly

—modules/

—————/home

————————/controllers——->home.php

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

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

Ashish

查看更多
你好瞎i
3楼-- · 2020-03-26 13:52

I had the same problem. When I renamed folders "Controllers" and "Views" to lower case, it worked. Linux debian.

enter image description here

查看更多
地球回转人心会变
4楼-- · 2020-03-26 13:52

I resolve my problem AS follow directory and files structure its working properly. on server side class name and file name should be start with capital letters as below

-modules
---/login
-----/controllers
---------/Login.php
-----/models
---------/Login_model.php
-----/views
---------/login.php
查看更多
该账号已被封号
5楼-- · 2020-03-26 14:11

I figured the problem was not with HMVC but was with codeigniter version 3.0. When it comes to unix(which was the operating system running on my server), it is case sensitive. So when I tried to access the controller it could'nt find the file because of case sensitivity and a 404 popped out everytime.

My folder structure before was something like :

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

And the link on which I was getting 404 was www.example.com/users/login

where "users" in the link is controller's name within the "controllers" folder under "modules" folder in my case named as users.php and "login" is the function inside the controller.

All I had to do was to change the case of the first letter of my module and controller name. Now my directory looks like

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

note : capitalized "U" in Users module and Users controller.

And the the url I used to access the users controller was : www.example.com/Users/login

And I was good to go.

查看更多
登录 后发表回答