【问题标题】:Controller file + View exists - still throws an error online [Zend Framework]控制器文件 + 视图存在 - 仍然在线抛出错误 [Zend 框架]
【发布时间】:2012-08-27 03:24:21
【问题描述】:

我已经设置好了我的 zend 框架应用程序——它在我的 localhost 上运行良好,最近刚刚将它部署到一个登台服务器。出于某种奇怪的原因,一个特定的控制器根本不工作。它抛出以下错误:

An error occurred
Page not found
Exception information:

Message: Action "index" does not exist and was not trapped in __call() 

控制器文件和视图文件都在线,没有拼写错误或大小写错误 - 所有其他控制器都在工作并且它们的动作,但是这个特定的控制器不工作并且它的动作都没有。事实上,我注意到无论我尝试取消此控制器的任何操作,我都会收到错误站,即操作索引不存在?这是怎么回事。


例如,这是我的控制器文件:

class HolidaysController extends App_Controller_Action {
  public function indexAction() {

  }
}

【问题讨论】:

  • 这可能是一个显而易见和愚蠢的问题,但你确定你在控制器中有一个公共函数 indexAction() (拼写正确),正确的文件名,正确的命名空间,正确的目录(不记得是否zf1 是否使用命名空间)?只想提一下,因为天知道我已经多次将头撞在墙上,因为我花了几个小时来调试同样明显和愚蠢的东西
  • 您使用哪个服务器?如果您使用的是 linux 服务器,那么您必须检查 classfunction 的命名约定,这是我过去面临的同样问题,我在命名约定方面有问题。所以请检查一次
  • 触发错误的 url 是什么?是否有任何自定义路线?
  • 如果你的本地主机是 windows this answer may help.
  • 不应该 App_Controller_ActionZend_Controller_Action 吗?

标签: php zend-framework


【解决方案1】:

您是否有机会在 Mac 或 Windows 机器上进行开发,并部署到 Linux 服务器?我有时会像这样被绊倒,因为我 Mac 上的标准文件系统区分大小写,但它在我的 Linux 服务器上。因此,如果我搞砸了控制器文件名的大写方式,在我部署到我的服务器之前,它可能不会被发现。

如果您认为这可能是问题所在,请登录您的服务器(SSH 或 FTP)并检查该控制器文件名的大小写。如果这是问题所在,修复起来可能会有些棘手,因为如果您在 Mac 或 Windows 上重命名文件,则在提交到源代码控制存储库和/或上传到服务器时不一定会采用新的大写字母。诀窍是首先将文件重命名为其他名称,然后将其重命名为您需要的大小写。

【讨论】:

  • 我意识到这不是问题所在,否则 ZF 会指示缺少控制器而不是缺少动作。无论如何,我在这里留下我的答案,因为它似乎对人们有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
相关资源
最近更新 更多