2011-03-02 83 views
1

有问题! 我正在使用Zend Quickstart应用程序作为(刚开始lol)开发的地下室。 我的本地机器上有PHP/MySQL服务器(WinXP) 因此,一切工作正常。 但后来我试图上传我的网站到远程服务器。这是我所得到的:Zend Autoloader在实际网站上无法正常工作

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类位于应用程序/模型/ 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; 
    } 
} 

检查过的一切,我能想象!它适用于我的开发机器,但在真正的服务器上 - 它不是! 已经遍寻谷歌,Zend docs和stackoverflow,但总是不完全是我的问题(或修复不起作用)。 即使在真实的服务器上,Mysite_名称空间中的类也能正常工作。 在服务器上的网站是我的开发网站的全部副本(压缩 - >上传 - >解压Zend库等) 请说如何解决这个问题或至少如何调试它...我敢肯定,有一些神诅咒的服务器选项,我忘了改变。 我真的很依赖你的帮助:(我的梦的项目是废墟,对不起英语对不起

回答

1

在你的文章中,每件事看起来都很正常,唯一能想到的就是确保文件夹“模型”的拼写是小写的服务器上。

您的开发机器是Windows系统,因此这些细节可以不管它,但他们在Unix重要。

+0

谢谢!问题真的是区分大小写!你的答案都是有用的! – Dmitry 2011-03-03 08:24:11

0

你的文件名应该是Post.php(资本“ P“)。

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

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

相关问题