0

/application/models で定義された user.php という名前のモデル クラスに接続しようとしています。以下は、私のブートストラップがどのように見えるかです:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap{
    protected function _initAppAutoload() {
            $autoloader = new Zend_Loader_Autoloader_Resource(array(
                            'namespace' => 'Application',
                            'basePath' => APPLICATION_PATH,
                            'resourceTypes' => array(
                                            'model' => array(
                                                            'path' => 'models',
                                                            'namespace' => 'Model',
                                            )
                            )
            ));
            echo '<pre>';
            var_dump($autoloader);
            return $autoloader;
    }

}

フォーリングは私のapplication.iniです

phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0

以下は私のIndexController.phpです

class IndexController extends Zend_Controller_Action {

private $user_connection;
private $login_status;

public function init() {
    /* Initialize action controller here */
    $this->user_connection = new Application_Model_User();
}

public function indexAction() {

    $sql = "    SELECT *
               FROM USER";
    $this->view->deals = $this->user_connection->select($sql);
}

以下は私のuser.phpファイルです:

class Application_Model_User extends Application_Model_Db_Connection {

public function __construct() {
    parent::__construct();
}

public function Connection(){
    return $this->getConnection();
}

public function insert($data, $table = 'user'){
   return parent::insert($table, $data);
}

public function select($sql){
    return parent::select($sql);
}

}

奇妙なことに、私は Windows で開発を行っており、すべて正常に動作しますが、同じコードを ec2 Linux インスタンスにプッシュすると、この致命的なエラーが発生します。

Fatal error:  Class 'Application_Model_User' not found in /var/www/html/dev/application/controllers/IndexController.php on line 11

スタック オーバーフローに関する多くの質問をして、それらのほとんどを試しましたが、この問題を解決するにはほど遠い状態です。どんな助けでも大歓迎です。

4

1 に答える 1

1

Linux の大文字と小文字の区別が原因で、上記の問題を修正できました。モデルの名前を最初の文字を大文字に変更し、コントローラーでそれらにアクセスできるようにしました。

user.php -> User.php

また、モデルにサブフォルダーを追加するために、ブートストラップに以下を追加できます。

protected function _initAppAutoload() {
    $autoloader = new Zend_Loader_Autoloader_Resource(array(
            'namespace' => 'Application',
            'basePath' => APPLICATION_PATH,
            'resourceTypes' => array(
                    'model' => array(
                            'path' => 'models/',
                            'namespace' => 'Model_',
                    ),
                    'model_db' => array(
                        'path' => 'models/db',
                        'namespace' => 'Model_Db_'
                    )
            )
    ));
于 2013-07-22T07:16:27.280 に答える