Zend Autoloader不适用于实际网站

时间:2011-03-02 22:12:48

标签: php zend-framework bootstrapping autoloader

有问题! 我正在使用Zend Quickstart应用程序作为(刚开始大声笑)开发的基础。 我的本地机器上有PHP / MySQL服务器(WinXP) 所以一切都很好。 但后来我尝试将我的网站上传到远程服务器。这就是我得到的:

Fatal error: Class 'Default_Model_Post' not found in /home/mysite/application/controllers/IndexController.php on line 13

第13行:

$post = new Default_Model_Post();

Default_Model_Post类位于application / models / post.php 在我的家庭服务器上,它是由zend app发现的!

我检查过.htaccess - 有SetEnv APPLICATION_ENV生产线 这是我的application.ini:

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
autoloaderNamespaces[] = "Mysite_"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.layout.layoutPath = APPLICATION_PATH "/layouts"
resources.db.adapter = "pdo_mysql"
resources.db.params.host = "localhost"
resources.db.params.username = "mysite_ib"
resources.db.params.password = "my passwd here"
resources.db.params.dbname = "mysite_ib"
resources.db.isDefaultTableAdapter = true

phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

这是Bootstrap.php:

<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initAutoload()
    {
        $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'Default',
            'basePath'  => dirname(__FILE__),
        ));
        //print_r( Zend_Loader_Autoloader::getAutoloaders()); exit; //tried to get some info here lol
        return $autoloader;
    }
}

检查了我能想象到的一切!它适用于我的开发机器,但在真实的服务器上 - 它没有! 已搜索过谷歌,Zend文档和堆栈溢出,但总是不完全是我的问题(或修复没有帮助)。 Mysite_命名空间中的类也可以在真实服务器上正常工作。 实时服务器上的站点是我的开发站点的完整副本(压缩 - &gt;上传 - &gt;与zend lib解压缩等) 请说明如何修复此问题或者至少如何调试它...我确定有一些该死的服务器选项我忘了改变。 伙计们,我真的很依赖你的帮助:(我的梦想项目已经成了废墟。抱歉英语很差。

2 个答案:

答案 0 :(得分:1)

你的帖子中的每件事看起来都很正常。我能想到的唯一一件事是确保文件夹“models”的名称拼写为服务器上的小写。

你的开发机器是Windows,所以这些细节可能无论如何,但它们在Unix上都很重要。

答案 1 :(得分:0)

您的文件名应为Post.php(大写“P”)。

正如Atef所提到的,Windows文件系统不区分大小写,因此application/models/Post.php的请求将解析为您的文件。

在* nix系统上,请求将失败,因为文件系统区分大小写。