【发布时间】:2018-07-29 18:29:20
【问题描述】:
在我的 AWS ec2 实例上加载模型时遇到了一个非常有趣的问题。
AWS ec2 实例运行良好,可以像我的本地主机一样运行 php 5.6。
在本地主机上,模型工作得很好,我将文件上传到我的网页,它因以下错误而中断:
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();
}
【问题讨论】:
-
你的本地主机是窗口吗?如果是这样,Windows 不会像 Linux 那样强制区分大小写。
dashboard_model!==Dashboard_model在 *nix 盒子上。另外,请尝试重命名文件以匹配类名。 -
我在我的 windows 10 机器上运行它,那么我怎样才能让它在我的 aws 上运行呢?
-
在 Windows 上,它不会抱怨大小写差异并会找到文件。在 Linux 上,
dashboard_model和Dashboard_model完全不同。要使其正常工作,请使该字符串的所有实例完全相同,包括文件名。 -
嗯,我尝试将模型类名称全部小写,就像我调用其他所有内容一样,但仍然没有成功。
-
它们需要按照代码点火器标准 (ellislab.com/codeigniter/user-guide/general/models.html#anatomy) 命名。所以
Dashboard_model应该是全盘一致的称呼。
标签: php codeigniter amazon-web-services amazon-ec2