为啥我在本地使用 codeigniter 会收到 403 Forbidden 错误?

Posted

技术标签:

【中文标题】为啥我在本地使用 codeigniter 会收到 403 Forbidden 错误?【英文标题】:Why am I getting a 403 Forbidden error using codeigniter locally?为什么我在本地使用 codeigniter 会收到 403 Forbidden 错误? 【发布时间】:2014-05-30 00:18:22 【问题描述】:

我是数据库工作的新手,我想知道是否有人可以帮助我理解为什么我只是在本地开发时不断收到 403 Forbidden 错误。我正在使用 codeigniter 尝试创建一个简单的登录程序。前几天我让程序在另一台计算机上运行,​​但现在当我尝试在浏览器中打开“视图”或“控制器”文件时,我在这台机器上得到的只是 403 错误。它一定是某个地方的某个设置,但我根本不知道在哪里看。有什么想法吗?

这是我的 database.php 文件:

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'tester';
$db['default']['password'] = 'tester';
$db['default']['database'] = 'intranet';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

这里是控制器文件welcome.php:

<?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');
    

    public function login_form()
    
        $this->load->view('login_form');
    

    public function login_submit()
    
        print_r( $_POST );
        $this->load->model('Usermodel', 'users');
        $match = $this->users->authenticate_user( $_POST['email'], $_POST['password'] );
        if( $match )
        
            echo "User exists in database!";
        
        else
        
            echo "Email or password is wrong, bretheren!";
        
    

我添加了行 $autoload['libraries'] = array('database');

我在 MAMP 上的 phpMyAdmin 中创建了一个数据库,以拥有代码指定的数据库和表,所以我很困惑为什么当我在浏览器中运行welcome.php 文件时出现 403 错误。它是本地的,所以甚至不应该有问题,对吧?我一定是在某处遗漏了一个设置。有什么想法吗?

【问题讨论】:

在您安装 Codeigniter 之前网站本身是否正常工作? 网站包含的唯一内容是一个 login_form.php 文件,该文件仅包含一个按钮和表单中的文本字段。这是一个非常“hello world”风格的东西。昨天整个事情在另一台计算机上运行(同时在那台机器上本地工作),但现在我已经把它带到这台机器上,我遇到了 403 问题。我唯一改变的是数据库的名称,用户的用户名和密码。然后我在上面发布的 database.php 文件中反映了这些更改。 您在浏览器中尝试的网址是什么? localhost/intranet/CodeIgniter_2.1.4/application/views/welcome_message.php @user2662333 您需要使用控制器的 URL,而不是视图的路径! 【参考方案1】:

如 cmets 中所述,您不应尝试直接访问控制器所在的 .php 文件。不允许直接脚本访问,这就是您获得 403 的原因。您需要通过您的index.php。所以不要使用这个网址

localhost/intranet/CodeIgniter_2.1.4/application/controllers/welcome.php

你需要使用

localhost/intranet/CodeIgniter_2.1.4/welcome //Use this if your .htaccess removes index.php
localhost/intranet/CodeIgniter_2.1.4/index.php/welcome

或访问您的登录表单

localhost/intranet/CodeIgniter_2.1.4/welcome/login_form //Use this if your .htaccess removes index.php
localhost/intranet/CodeIgniter_2.1.4/index.php/welcome/login_form

【讨论】:

不工作...仍然无法加载资源:服务器响应状态为 403(禁止)【参考方案2】:

如果有 htaccess 文件将 denied 更改为 granted 或完全删除它们

【讨论】:

【参考方案3】:

这发生在我身上。我无法用上述答案解决它。

我尝试将文件夹 CodeIgniter-3.1.4 Access (Others) 更改为 Access 文件,现在我可以看到 index.php 文件。

我没有再尝试过。希望对您有所帮助。

【讨论】:

以上是关于为啥我在本地使用 codeigniter 会收到 403 Forbidden 错误?的主要内容,如果未能解决你的问题,请参考以下文章

为啥会出现 CodeIgniter 安装错误

为啥我在本地 TomEE 1.6 中收到 HsqlException?

为啥在进行本地搜索时会收到 MKErrorDomain 错误?

为啥我在本地环境(而在原始服务器上没有)上的 Wordpress 博客文章(仅)上收到错误消息

为啥 __sysChangeTxBsn 会收到带有本地更新但不是远程更新的值?

为啥我在使用 foreach 时会收到 ***Error?