【问题标题】:MAMP and CodeIgniter - Simple form post returns Fatal error: Uncaught Error: Class 'CI_Controller' not foundMAMP 和 CodeIgniter - 简单表单帖子返回致命错误:未捕获错误:未找到类“CI_Controller”
【发布时间】:2020-06-29 23:17:04
【问题描述】:

把我的头撞到墙上来解决这个错误。我在本地主机上使用带有 MAMP 的 codeigniter 2。该站点在 WAMP (Windows 10) 上完美运行,所有配置都相同。

我有一个简单的登录表单,在提交时甚至没有点击我的 post 方法,而是显示错误:

Fatal error: Uncaught Error: Class 'CI_Controller' not found in /Applications/MAMP/htdocs/mysite/src/system/core/CodeIgniter.php:237

我已经在我的 dologin 函数中尝试了测试 var_dumps。有趣的是,如果我直接在地址栏中添加https://localhost/mysite/src/session/dologin,错误就会消失,并且会显示 var_dump 的输出。

Core/CodeIgniter.php 第 235 - 238 行

function &get_instance()
{
    return CI_Controller::get_instance();
}

登录表单

<form action="https://localhost/mysite/src/session/dologin" method="post">
    <label for="username">Username</label>
    <input type="text" id="username" name="username" />

    <label for="password">Password</label>
    <input type="password" id="password" name="password" />

    <button type="submit">Login</button>
</form>

CI登录功能(加载登录视图)

public function login()
{
    $this->output->enable_profiler(false);

    $this->data['system_message'] = null;
    if (file_exists(SYSTEM_MESSAGE)) {
        $this->data['system_message'] = file_get_contents(SYSTEM_MESSAGE);
    }

    $this->template->write_view('content', 'session/login', $this->data);
    $this->template->render();
}

CI登录表单发布功能

public function dologin()
{
    global $pre_filter;

    $username = $this->input->post('username');
    $password = base64_encode($pre_filter['password']);
    $auth = $this->rest->post('authentication/sessions', ['username' => $username, 'password' => $password, 'endpoint' => $this->sitecode]);
    //...further processing
}

两个 CI 控制器函数都在这个类中,它扩展了一个自定义控制器。

class Session extends MySite_Controller {
}

注意:
BASEPATH 正确(通过多个调试 var_dump 检查)
$config['base_url'] = '', 设置为空白
.htaccess 设置正确且 Apache 的 Rewrite 模块已开启
$config['log_threshold'] = 0, 日志关闭

【问题讨论】:

    标签: php codeigniter codeigniter-2


    【解决方案1】:

    这似乎可行

    在 system/core/CodeIgniter.php 中,大约在第 75 行,更改:

    set_error_handler('_exception_handler');
    

    到...

    set_exception_handler('_exception_handler');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-06
      • 2013-02-18
      • 2013-11-04
      • 2021-07-10
      • 1970-01-01
      • 2018-01-01
      • 2023-03-25
      • 1970-01-01
      相关资源
      最近更新 更多