在我的AWS ec2实例上加载模型时遇到了一个非常有趣的问题。
AWS ec2实例运行良好,并且像我的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版本,那么在live上有什么问题?
根据代码点火器标准,类名和文件名都是正确的。
以下是链接: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();
}
在评论中进行了一些讨论后,最终的答案是,根据文档,对load->model('dashboard_model')
的调用必须将类名的第一个字母大写。
$this->load->model('Dashboard_model');
它在Windows上工作而在Linux上不工作的原因是Windows文件系统不区分大小写(通常)。一般来说,当在Windows上进行本地开发并部署到*nix环境时,当它在本地而非生产环境中工作时,首先应该检查的是情况不正确。
我目前在Ubuntu 16.04上使用CodeIgniter 3。
男人们只是到处都用同样的名字
我的型号是Login_database
。
示例:
-
在型号文件夹中
class Login_database extends CI_Model { }
-
在控制器中,当你加载模型时,像这个一样
$this->load->model('Login_database');
-
在config文件夹中的Autoload文件中,键入
$autoload['model'] = array('Login_database');
我通过这种方式完成的解决方案:我早些时候打电话给
$this->load->model('**Users_Model**');
现在我打电话给
$this->load->model('**users_model**');
我还重命名了模型文件,如下所示:/项目名称/codeigniter/application/models/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);
解决了上述问题。