【问题标题】:APPPATH codeigniter doesnt work on serverAPPPATH codeigniter 在服务器上不起作用
【发布时间】:2012-02-11 18:23:39
【问题描述】:

我在 codeigniter 中遇到问题 - 将其上传到服务器后,我需要库文件夹中模型中的文件

<?php
require_once(APPPATH.'libraries/MY_Model.php');
Class scroll_news_model extends MY_model
{
 public function __construct()
 {
    parent::__construct("scroll_news");
 }
}

此代码在我的本地主机环境中运行良好,但上传后我不断收到此错误:

致命错误:require_once() [function.require]: 无法打开所需的 'application/libraries/MY_Model.php' (include_path='.:/usr/lib/php:/usr/local/lib/php')在 /home/arab2day/public_html/temp/arab2day/application/models/scroll_news_model.php 第 2 行

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    检查文件名的大小写; windows 在ABC.phpabc.php 之间没有区别,但 linux 有。

    【讨论】:

    • 没问题,如果回答了您的问题,请按左侧的“验证答案”按钮
    • @RamySelim:这不是您在 Codeigniter 中扩展模型类的方式,而是在不必要地加载文件。此外,如果您使用加载器类而不是 include,CI 会在一定程度上规范化文件名。
    • 哇,同样的差异出现在 MacOS 和 Linux 之间。在我仔细查看传递给 require_once() 的字符串之前,我已经完全准备好打折这个答案了,事实上,它的大小写与我的目标文件的大小不匹配。我曾预计基于 BSD 的 MacOS 不会做如此愚蠢的事情——但是,Apple 多年来一直在摆弄它以使其更加“友好”(是的,没错)。显然这是 HFS+ 的一个特性。见apple.stackexchange.com/a/22304/37410
    • @Hephaestus 我认为 Windows 方式或将它们视为相同,虽然更用户友好,但这是错误的,尤其是从编程的角度来看。 “a”和“A”是两个非常不同的字符,您只需要考虑非拉丁字母的相同问题即可了解为什么这是一个糟糕的主意。因此,unix 方式(在 linux、bsd、osx、...中找到)是“正确”的方式:如果您要求某些东西,请不要给其他可能相同的东西,也许,我们希望...跨度>
    • @Lepidosteus 是的,正是 HFS+ 方法的错误让我和 OP 陷入了麻烦,而且我在其他情况下也看到过这种错误。 (也许你没有注意到我对“友好”一词的双引号 ;-)
    【解决方案2】:

    如果你试图扩展CI_Model类,MY_Model.php属于/core目录而不是/libraries,你不需要包含它——它会在基础模型时自动加载类已加载。

    这就是扩展核心类的工作方式,扩展常规的非必要“库”略有不同。在此处阅读更多信息:

    http://codeigniter.com/user_guide/general/core_classes.html

    就字面问题而言,Lepidosteus 很好地说明了区分大小写和操作系统,我自己也遇到过几次这个问题。

    【讨论】:

      猜你喜欢
      • 2015-02-17
      • 1970-01-01
      • 1970-01-01
      • 2017-06-12
      • 1970-01-01
      • 1970-01-01
      • 2015-07-25
      • 2016-03-20
      • 1970-01-01
      相关资源
      最近更新 更多