【问题标题】:Missing Controller when using a prefix admin in CakePHP 3.2在 CakePHP 3.2 中使用前缀 admin 时缺少控制器
【发布时间】:2016-11-10 19:57:28
【问题描述】:

我的网站管理部分使用 CakePHP 3.2 时遇到问题。

这部分在本地的 wamp 上运行良好,但是当我将站点移动到 apache 服务器时,它停止了工作。我有这个错误信息:

缺少控制器 Cake\Routing\Exception\MissingControllerException 错误:找不到仪表板控制器。错误:在以下文件中创建类 DashboardController:src/Controller/Admin/DashboardController.php

变量中的这个错误:

错误:不可序列化的对象 - Cake\Routing\Exception\MissingControllerException。错误:在 /data/vhosts/dev.droplet.ninja/htdev/vendor/cakephp/cakephp/src/Routing/Dispatcher.php 中找不到控制器类仪表板,第 79 行

但控制器存在于具有此内容的正确路径:

<?php
namespace App\Controller\Admin;

use App\Controller\AppController;

class DashboardController extends AppController
{

    public function index()
    {

    }
}

我的 routes.php 中的前缀是:

// Admin namespace
Router::prefix('admin', function ($routes) {
    $routes->connect('/', ['controller' => 'Dashboard', 'action' => 'index', 'dashboard']);
    $routes->fallbacks('DashedRoute');
});

这些路线适用于网站的公共部分,但不适用于此。它似乎可以读取前缀并尝试访问该文件,甚至要求我创建与我已有的完全相同的文件。唯一的谜团是它为什么找不到他。

控制器名称也在:

src/Controller/Admin/DashboardController.php

我一直在寻找两个 apaches 设置之间的差异,但没有找到使 cakePhp 具有这种行为的原因。

你有什么想法吗?

谢谢

【问题讨论】:

  • 如果文件在那里,那几乎总是权限问题。
  • 权限是什么意思?访问服务器上的文件?我刚检查过。这些文件具有以下权限 rw-r--r-- (644)。我将检查我的身份验证,看看那里是否有问题。感谢您的帮助。
  • 好的,我查过了,这里没有问题。您还有其他想法吗?
  • 我没有任何其他想法,但是我还没有在我的项目中使用管理路由。开始在 Dispatcher.php 的第 79 行附近添加一些调试?
  • 谢谢,我也这样做了。似乎问题出在 EventListener 中。可能是缺少扩展的问题,还是版本问题?我注意到即使我将 wamp 设置为使用 PHP 5.6.19,它也会将 PHP 7.0 用于 CakePHP 应用程序。这可能会造成版本冲突。

标签: php php-5.6 cakephp-3.2


【解决方案1】:

它可能不起作用的原因有很多。就我而言,这是因为我必须清除旧的路由缓存。

bin/cake cache clear _cake_routes_

您可以通过运行bin/cake cache list_prefixes 来获取缓存前缀列表。

更多信息:/3.0/en/console-and-shells/cache.html

【讨论】:

    猜你喜欢
    • 2018-06-07
    • 1970-01-01
    • 2013-12-16
    • 2014-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多