gpt4 book ai didi

php - HMVC codeigniter 适用于本地服务器,但不适用于 Web 服务器

转载 作者:行者123 更新时间:2023-12-02 06:35:06 25 4
gpt4 key购买 nike

这让我很痛苦

我有什么?CI版本:2.1.4模块化扩展——wiredesignz 的 HMVC一个基本的 codeigniter(hmvc) 项目,可以很好地处理它在本地服务器 (mamp) 和 php 5.5.3 中的设置

我的问题将项目移至公共(public) Web 服务器后,我更改了以下内容。——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

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

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

问题每当尝试访问 http://example.com/我收到以下消息

404 页面未找到找不到您请求的页面。

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

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

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

更新::下面是我默认 Controller 的索引函数

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

最佳答案

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

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

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

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

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

我所要做的就是更改模块和 Controller 名称首字母的大小写。现在我的目录看起来像

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

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

我用来访问用户 Controller 的 url 是:www.example.com/Users/login

我很高兴去。

关于php - HMVC codeigniter 适用于本地服务器,但不适用于 Web 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21527648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com