HMVC codeigniter works on local server but not on web server

左心房为你撑大大i 提交于 2019-12-19 10:06:47

问题


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 */

回答1:


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.




回答2:


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




回答3:


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




回答4:


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


来源:https://stackoverflow.com/questions/21527648/hmvc-codeigniter-works-on-local-server-but-not-on-web-server

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!