2013-02-14 33 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