PHP Codeigniter与Apache在高山linux上

我已经写了一个小的代码测试应用程序,目前正在我的Windows系统上运行。 我创建了一个linux虚拟机,并试图在这个新的虚拟服务器上安装应用程序。 我的一些网络应用程序正常运行,但其他部分,没有。 具体来说,这工作:

 http://123.123.123.123/myapp/controller1/

但是这不:

 http://123.123.123.123/myapp/controller2/mymethod/1/2/3

它失败,并出现无法加载controller2_model的错误。

这是失败的控制器的实际代码(它实际上称为xferLogger vs. controller2):

 class xferLogger extends CI_Controller { 
      public function __construct() { 
              parent::__construct();
              echo(2); 
              $this->load->model('xferLogger_model'); 
              $this->load->helper('date'); //this library is needed for the base_url() method that is being called in the view "result.php" 
              $this->load->helper('url'); 
      } 

这里是模型:

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

完整的错误消息是:遇到错误。无法找到您指定的模型:xferlogger_model。

这是我注意到的。在错误信息中,您会注意到记录器中的“L”是小写字母。但在我的代码中,它是一个大写字母L. 我检查了我的控制器,模型本身以及routes.php文件。我似乎无法发现我的外壳有任何问题。

??

0
额外 编辑
意见: 1
你可以在你尝试加载模型的地方张贴你的代码吗?你可以请你也发布你的模型(只是第一位+构造函数)。但我同意上面的人 - 你可能有“Controller2_model.php” - 它应该是“controller2_model.php”
额外 作者 Laurence,
完整的错误信息是:“遇到错误,无法找到您指定的模型:mycontroller2_model”。我已经复制了所有的东西...我检查了与案件的差异..到目前为止还没有注意到任何事情。将继续检查。
额外 作者 dot,
也证实了控制器的构造函数正在被调用,但是当我尝试加载我的模型时它正好死掉...
额外 作者 dot,
class xferLogger extends CI_Controller {public function __construct(){parent :: __ construct();回波(2); $这 - >负载>模型( 'xferLogger_model'); $这个 - >负载>帮手( '日'); //这个库是在视图“result.php”中调用的base_url()方法需要的$ this-> load-> helper('url'); }这里是模型:<�?php class xferLogger_model extends CI_Model {public function __construct(){$ this-> load-> database();}
额外 作者 dot,
我检查过文件夹,表名,文件名。同一文件夹中的其他模型正在加载,没有任何问题...
额外 作者 dot,
正如SérgioMichels已经提到的,在Linux(和IIRC,任何其他非Windows系统)上,文件/目录名称和mysql表名都区分大小写。而且,“不起作用”不是有效的错误消息。
额外 作者 tereško,
显示完整的错误将会有所帮助。
额外 作者 Samy Dindane,
Linux区分大小写,也许这会搞乱你的应用程序。
额外 作者 Sérgio Michels,
你也确定你复制了一切,包括像.htaccess这样的隐藏文件
额外 作者 ehudokai,

1 答案

来自用户指南:类名必须带有大写字母的第一个字母,其余的名称必须小写。因此:

class Xferlogger_model extends CI_Model//First letter capitalised

和你的模型负载

$this->load->model('xferlogger_model'); //lower case

和你的PHP文件名

xferlogger_model.php   //lower case

Codeigniter模型用户指南

0
额外
我改进了我的答案。您是否也可以重新编辑您的原始问题,并提供更新后的代码和错误信息?
额外 作者 Laurence,
没有问题 - 它是如何我们都了解的:)
额外 作者 Laurence,
这并没有解决我的问题。我经历了控制器,模型和路由,并将Xferlogger替换为Xferlogger。
额外 作者 dot,
好。所以你最新的建议将模型名称更改为全部小写确实有所帮助。它现在可以工作。那么带走课程是保持所有型号名称小写?
额外 作者 dot,
我很抱歉没有仔细阅读手册。这不是借口..但我试图从Windows,Wamp,MySQL移动到Linux,Postgres,Apache。而codeigniter,linux和postgres对我来说都是新手,所以我有点溺水在文档中。谢谢您的帮助。
额外 作者 dot,