【发布时间】: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