2013-03-09 72 views
3

錯誤我有一個應用和它的作品在我的本地的筆記本電腦罰款(Windows 7)中。 我已經上傳文件到遠程服務器現在它給出了一個錯誤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'); - >同樣的錯誤
  • 加載另一個庫 - >同樣的錯誤
  • 特里普爾檢查文件的存在體(FTP) - >有
  • 檢查文件夾和文件的權限。 (文件夾:755,文件:644;與助手文件夾相同)

有人可以幫我保持頭髮嗎? ;)

+0

執行等各個環節和內部路由的工作?聽起來幾乎像一個htaccess的問題。 – 2013-03-09 18:06:28

+0

@RickCalder剛剛嘗試過,我可以導航一些頁面/路線。還檢查了工作頁面的代碼,看到它只使用庫中的內部版本和非定製版本。 – 2013-03-09 18:25:49

+0

你有沒有想過這個?我有完全相同的問題。 :s – m0dE 2014-07-17 19:27:57

回答

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'); 
+0

當我將類名和文件名更改爲全部小寫時,它仍然不起作用。當我在文件名和類名之前添加'MY_'時,它就起作用了。但是之後我必須在應用程序中重寫很多內容,因爲'$ this-> itemblocklibrary-> method()'行不再有效。所以這更多的是解決方法。真正的問題是,當它們被命名爲不帶'MY_'時,它不會想要加載文件夾庫中的文件。 – 2013-03-10 11:59:00

+0

你有兩個選擇。你可以嘗試將'$ config ['subclass_prefix']'設置爲'''''一個空字符串;該文檔聲明這個前綴允許你擴展本地庫,但是因爲你正在創建你自己的類,所以試着刪除它。或者,您可以將一個對象別名作爲第三個參數傳遞給加載器類:'$ this-> load-> library('MY_itemblocklibrary',array(),'itemBlockLibrary'); – Wolf 2013-03-10 16:09:02

相關問題