Codeigniter:无法找到模型

时间:2015-12-18 01:52:37

标签: php codeigniter amazon-web-services amazon-ec2

我在AWS ec2实例上加载模型时遇到了一个非常有趣的问题。

AWS ec2 Instance工作正常,像我的localhost一样运行php 5.6。

在localhost上模型工作得非常好,我将文件上传到我的网页,它突然出现以下错误:

An uncaught Exception was encountered

Type: RuntimeException

Message: Unable to locate the model you have specified: Dashboard_model

Filename: /var/www/html/poe_dashboard/system/core/Loader.php

Line Number: 314

Backtrace:

File: /var/www/html/poe_dashboard/application/controllers/Dashboard.php
Line: 7
Function: __construct

File: /var/www/html/poe_dashboard/index.php
Line: 292
Function: require_once

对我来说这没有意义,因为如果它在本地工作,使用相同的PHP版本,那么现场的问题是什么?

根据codeigniter标准,类名和文件名都是正确的。

这是链接:http://www.haddad.design/poe_dashboard/

如果我根本不选择加载我的模型而只是运行控制器来加载视图,它会按正常情况加载。

有什么建议吗?

控制器:

class Dashboard extends CI_Controller {

function __construct() {
    parent::__construct();
    $this->load->model('dashboard_model');
}

文件名:

dashboard_model.php

型号:

class Dashboard_model extends CI_Model {

public function __construct() {
    parent::__construct();
}

3 个答案:

答案 0 :(得分:4)

在评论中进行一些讨论之后,最后的答案是,对load->model('dashboard_model')的调用必须将班级名称的第一个字母大写为per the documentation

$this->load->model('Dashboard_model');

它在Windows上而不是在Linux上工作的原因是因为Windows文件系统是not case sensitive(通常)。一般来说,当在Windows上进行本地开发并部署到* nix环境时,当它在本地而非生产环境中工作时,首先要检查的是不正确的情况。

答案 1 :(得分:0)

我通过这种方式完成的解决方案: 我之前打过电话

$this->load->model('**Users_Model**');

现在我正在打电话

$this->load->model('**users_model**');

我还将模型文件重命名为: /项目名称/笨/应用/模型/的 Users_model.php 和代码

defined('BASEPATH') OR exit('No direct script access allowed');

class Users_model extends CI_Model{
    public function __construct(){
        $this->load->database();
    }
}

我做了一个更改: 在调用模型函数时我正在使用

//sending to db model
$result = $this->**Users_Model**->customQueryInsertUpdateGetId('**Users**',$data,$isdCode,$mobileNumber);

现在我正在使用

//sending to db model
$result = $this->**users_model**->customQueryInsertUpdateGetId('**users**',$data,$isdCode,$mobileNumber);

它解决了上述问题。

答案 2 :(得分:0)

我目前正在Ubuntu 16.04上使用CodeIgniter 3 伙计们到处都是同名的 我的模特名称为Login_database

示例:

  1. 在模型文件夹

    class Login_database extends CI_Model
    {
    
    }
    
  2. 在加载模型时在控制器中,按照这样做

    $this->load->model('Login_database');
    
  3. 在config文件夹的Autoload文件中,输入

    $autoload['model'] = array('Login_database');