2013-02-14 32 views
1

我对ZF非常陌生,我正在研究已经构建的应用程序。我的任务是在应用程序中创建Web服务。我已经在本地设置了应用程序,并且工作正常。所以我添加了一个新的控制器,并且可以在本地主机上访问,但是当我试图访问服务器时,它会导致404错误,但其他控制器可以完美访问。新控制器中的Zend Framework 404错误问题

AllowOverride All和Apache mod_rewrite在服务器中启用。有没有人有任何想法解决这个问题。我坐在这个错误2天..

<VirtualHost *:80> 
      DocumentRoot /path/to/site/public 
      ServerName sitename.com 
      ServerAlias www.sitename.com 
     <Directory /path/to/site/public> 
      AllowOverride All 
     </Directory> 
    </VirtualHost> 

控制器代码:

class APIController extends Zend_Controller_Action 
{ 

    public function init() 
    { 
     /* Initialize action controller here */ 

    } 

    public function indexAction() 
    { 

     // Setup REST server 
     $server = new Zend_Rest_Server(); 
    $server->setClass('APIHandlerClass'); 
    $server->handle(); 
    exit; 
    } 


} 

我的URL site.com/API访问它,它会显示在实际情况下的XML 。

编辑

我已经安装在本地Linux系统的应用程序,我发现这个问题是关系到Linux操作系统。

我曾尝试以下:

  1. 创建这就造成了404

  2. 复制现有控制器,并更名为原单控制器的名字一个新的控制器。然后我更改了复制控制器中的代码。我访问了我的控制器,它工作正常!

  3. 复制了现有控制器并重命名了复制的控制器。我用新名称调用了复制的控制器,显示404错误。

我的问题是我需要指定新的控制器名称任何地方!?我没有找到关于这个的任何文档,我甚至为控制器创建了视图文件。

+0

我们需要更多信息。你可以给控制器的类名称,它在你的项目中的位置,以及你期望能够工作的例子URL,但是给出了一个404? – 2013-02-14 17:48:23

+1

如果其他控制器正常工作,则问题与您的虚拟主机或重写设置无关。什么是APIController类的文件名和位置? – 2013-02-14 18:09:46

+0

Hi @TimFountain在localhost中显示了XML,但是当在测试服务器中访问时,它会缩短404页面。文件名:APIController.php和位置:/ application/controllers – 2013-02-14 18:14:03

回答

4

如果应用程序在Windows本地工作,但在运行Linux的测试服务器上不起作用,则可能是区分大小写的问题。检查文件夹的大小写,包括控制器文件夹和视图/脚本文件夹(都应该是小写)。

+0

每个文件夹名称都是小写。问题是所有其他控制器都在测试服务器上工作,但新创建的控制器显示404.我们是否需要在任何配置文件中指定新添加的控制器。 – 2013-02-16 14:40:20

+0

您好蒂姆你可以检查我的问题中编辑过的部分。我在linux系统中安装了应用程序。 – 2013-02-16 19:29:14

+0

如果它位于'application/controllers'中,则不需要在任何地方指定新控制器。它仍然可能是一个区分大小写的问题,可能是由于您使用了全部大写的控制器名称。你可以用类名“ApiController”和文件名“ApiController.php”来尝试吗? – 2013-02-16 20:24:20