【问题标题】:CakePHP Missing Controller - but it existsCakePHP 缺少控制器 - 但它存在
【发布时间】:2010-09-20 02:46:32
【问题描述】:

我最近下载了 cakephp-1.3.4。我在我的网络服务器上设置它。我遵循了高级安装设置。我的文件夹结构如下。

/common/
  cakephp/
     app/
     etc...
/htdoc/

/htdoc 文件夹是 webroot; cakephp 位于 common 文件夹中。

我已将 index.php 中的路径配置为指向此文件夹结构。我已经启动并运行了该应用程序。我创建了一个布局,应用程序已将其拾取(连同所有 css 和图像 - 一切正常)。

我在cakephp/app/controllers/ 中创建了一个posts_controller.php。现在,当我尝试访问以下页面时:http://localhost/posts。我收到一条消息,提示找不到控制器,我应该创建一个 app/controllers/posts_controller.php(它已经存在!)。

另外奇怪的是使用默认 pages_controller works。我创建了一个 about.ctp 并将其放入 app/views/pages/about.ctp。 Vising http://localhost/pages/about 会按预期显示。

解决方案:

Sam 帮我解决了这个问题(请参阅下面的长评论线程)。问题是我为我的 ROOT 文件夹设置了相对路径。这把事情搞砸了。解决方案是直接设置绝对路径或使用您的相对路径调用realpath,将其解析为正确的绝对路径。

【问题讨论】:

    标签: php apache cakephp shared-hosting cakephp-1.3


    【解决方案1】:

    确保您的控制器类命名正确(应该是 PostsController)并从 AppController 继承(不是绝对必要,但很好的做法)。

    【讨论】:

    • @Sam:我复制粘贴了它在 Missing Controller 页面上显示的代码。所以名称是 PostsController,它确实继承自 AppController
    • 您使用什么托管?你的文件权限正常吗?
    • @Sam:这是一个共享托管服务器。我没有修改文件权限,除了 cakePHP 在初始设置中要求我修改的权限(比如将 tmp 文件夹设置为可写等)
    • 另外,您可以尝试将 sn-p 代码放在 webroot/index.php 的底部(在 $Dispatcher = new Dispatcher(); 之前),如下所示:pr(App::path("controllers"));
    • 好吧,你的路径看起来有点乱,确保你的 ROOT 设置为绝对路径,而不是相对路径。使用 webroot/index.php 中的 realpath() 之类的。
    猜你喜欢
    • 1970-01-01
    • 2013-12-16
    • 2014-02-06
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    • 2013-12-12
    相关资源
    最近更新 更多