“无法加载请求的类”错误仅在服务器上

时间:2013-03-09 17:53:48

标签: php codeigniter remote-server

我的本地笔记本电脑(Windows 7)上有 CodeIgniter 应用程序,可以正常工作。 我已将文件上传到远程服务器,现在发出错误 Unable to load the requested class: itemblocklibrary

加载库的代码:

$ci =& get_instance();
$ci->load->helper('member_area_helper'); // works
$ci->load->library('itemBlockLibrary'); // dies here

该文件位于远程服务器上:/www/case/project/application/libraries/itemBlockLibrary.php

我试过了:

echo 'Have you seen ' . APPPATH . 'libraries/itemBlockLibrary.php? <br/>';
echo (file_exists(APPPATH . 'libraries/itemBlockLibrary.php') ? 'Yes sir, it does exists!' : 'No sir, can\'t find it');

输出:

Have you seen application/libraries/itemBlockLibrary.php? 
Yes sir, it does exists!

  • 使用小写$ci->load->library('itemblocklibrary'); - &gt;同样的错误
  • 加载另一个库 - &gt;同样的错误
  • tripple check file existents(FTP) - &gt;是
  • 检查了文件夹和文件权限。 (文件夹:755,文件:644;与助手文件夹相同)

有人可以帮我养头发吗? ;)

1 个答案:

答案 0 :(得分:1)

我怀疑你的服务器是Linux的一种风格,你遇到了区分大小写。您的文件使用驼峰案例名称itemBlockLibrary.php,并且正在转换为所有小写和大写的第一个字母,以便在CI_Loader类的目录中查找匹配的文件。

从Loader类,_ci_load_class函数:

// We'll test for both lowercase and capitalized versions of the file name
foreach (array(ucfirst($class), strtolower($class)) as $class)

更改文件名以使用

的CI约定
  • 文件名必须大写。例如:Myclass.php
  • 类声明必须大写。例如:class Myclass
  • 班级名称和文件名必须匹配。

查看custom library classes的文档。

在您的情况下,您需要将文件命名为MY_itemblocklibrary.php(或者您在配置文件中设置的前缀),然后将其加载为:

$this->load->library('MY_itemblocklibrary');