3

CodeIgniterアプリケーションがあり、ローカルのラップトップ(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、ヘルパー フォルダと同じ)

誰かが私の髪を保つのを手伝ってくれますか? ;)

4

1 に答える 1

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
  • クラス宣言は大文字にする必要があります。例: クラス Myclass
  • クラス名とファイル名は一致する必要があります。

カスタム ライブラリ クラスのドキュメントを参照してください。

あなたの場合、ファイルにMY_itemblocklibrary.php(または構成ファイルに設定したプレフィックス)という名前を付けて、次のようにロードする必要があります。

$this->load->library('MY_itemblocklibrary');
于 2013-03-09T20:32:55.617 に答える