【问题标题】:Zend Autoloader does not work on actual siteZend Autoloader 在实际站点上不起作用
【发布时间】:2011-03-02 22:12:47
【问题描述】:

有问题! 我正在使用 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 应用程序找到的!

我检查了.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;
    }
}

检查了我能想象到的一切!它可以在我的开发机器上工作,但在真实服务器上 - 它不能! 已经在 Google、Zend 文档和 stackoverflow 上进行了搜索,但总是不完全是我的问题(或者修复没有帮助)。 即使在真实服务器上,Mysite_ 命名空间中的类也可以正常工作。 实时服务器上的站点是我的开发站点的全部副本(压缩 -> 上传 -> 使用 zend lib 解压缩等等) 请说出如何解决这个问题或至少如何调试它......我确定有一些该死的服务器选项我忘记更改了。 伙计们,我真的很依赖你的帮助:(我梦想的项目已经破灭。抱歉英语不好。

【问题讨论】:

    标签: php zend-framework bootstrapping autoloader


    【解决方案1】:

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

    你的开发机器是 Windows,所以这些细节在它上可能无关紧要,但在 Unix 上却很重要。

    【讨论】:

    • 谢谢!问题真的在于区分大小写!你的两个答案都很有用!
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      • 2012-02-07
      • 2016-11-12
      • 2015-09-06
      • 1970-01-01
      • 2012-01-04
      • 1970-01-01
      相关资源
      最近更新 更多