【问题标题】:Zend Framework 404 error issue in new controller新控制器中的 Zend Framework 404 错误问题
【发布时间】:2013-01-30 14:46:06
【问题描述】:

我是 ZF 的新手,我正在开发一个已经构建的应用程序。我的任务是在应用程序中创建 Web 服务。我已经在本地设置了应用程序并且它工作正常。所以我添加了一个新的控制器,并且可以在localhost中访问,但是当我尝试在服务器中访问相同的控制器时,会导致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 错误。

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

【问题讨论】:

  • 我们需要更多信息。你能给出控制器的类名、它在你的项目中的位置,以及你希望工作但给出 404 的示例 URL 吗?
  • 如果其他控制器正常工作,则问题与您的虚拟主机或重写设置无关。 APIController 类的文件名和位置是什么?
  • 嗨 @TimFountain 在 localhost 中显示 XML,但在测试服务器中访问时显示 404 页面。文件名:APIController.php 和位置:/application/controllers
  • 好的 - 其他控制器是否在测试服务器上工作?你得到的是 ZF 404 页面还是 Apache 页面?
  • 是的,其他控制器正在工作文件。我收到了自定义 404 错误页面。

标签: php zend-framework controller http-status-code-404


【解决方案1】:

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

【讨论】:

  • 每个文件夹名称都是小写的。问题是所有其他控制器都在测试服务器上工作,但新创建的控制器显示 404。我们是否需要在任何配置文件中指定新添加的控制器。
  • 嗨蒂姆你能检查我问题中的编辑部分吗?我在linux系统中设置了应用程序。
  • 如果新控制器位于application/controllers 中,则无需在任何地方指定新控制器。它仍然可能是区分大小写的问题,可能是由于您使用全大写的控制器名称引起的。你能用类名ApiController和文件名ApiController.php试试吗?
  • 你是对的! :) 这是命名问题。我的控制器名称是 APIController.php,所以我将其更改为 ApiController.php。此外,我们需要确保新创建的控制器的权限为 755。谢谢蒂姆,你救了我;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多