web-dev-qa-db-ja.com

CodeIgniter:「要求されたクラスをロードできません」

WAMPボックスで、次のことを行いました。

  1. /application/libraries/Foo.phpというファイルを追加しました
  2. Foo.phpはクラスであり、その名前はFooです
  3. /application/config/autoload.phpに、$autoload['libraries'] = array('foo');を追加しました

すべて正常に動作します。 LAMPボックスにアップロードすると、次のエラーが表示されます。

Unable to load the requested class: foo

/application/libraries/Foo.phpの許可は0755です。所有者は他のCIファイルと同じです。自動ロードからfooを取り出すと、問題はなくなります。

何が間違っているのでしょうか?

18

Windowsでは、パスの大文字小文字は関係ありません。 Linuxではそうです。

自動ロードするときは、「foo」ではなく「Foo」を使用します。

これでうまくいくと思います。

Codeigniterはパスの大文字と小文字を区別するのに十分に賢く、クラスはphpで大文字と小文字が区別されないため、オートロードを解除しても機能すると思います。

42
evan

ローカルのOSxからLinuxライブサイトにデプロイするときに、同様の問題が発生しました。

OSxでは問題なく動作しましたが、Linuxでは次のようになりました。

An Error Was Encountered

Unable to load the requested class: Ckeditor

問題は、Linuxパスでは明らかに大文字と小文字が区別されるため、ライブラリファイルの名前を「ckeditor.php」から「CKEditor.php」に変更する必要があったことです。

また、大文字と小文字を一致させるためにロードコールを変更しました。

$this->load->library('CKEditor');
3
Ian

アプリケーションにLinuxサーバーを使用している場合、この問題を回避するには小文字のファイル名とクラス名を使用する必要があります。

例.

ファイル名:csvsample.php

class csvsample {

}
0
Janzell Jurilla