提问者:小点点

Cakephp 3给我致命的错误:未捕获错误:类'蛋糕\Http\服务器'未找到


我已经完成了从cakephp 2到cakephp 3的升级,这导致了问题,因此我发现我必须用一组新文件替换app/webroot,这些文件是cakephp 3框架的一部分,但现在我遇到了以下错误:

Fatal error: Uncaught Error: Class 'Cake\Http\Server' not found in /usr/share/nginx/html/web/app/webroot/index.php:33 Stack trace: #0 /usr/share/nginx/html/web/index.php(47): require() #1 {main} thrown in /usr/share/nginx/html/web/app/webroot/index.php on line 33

经过一些研究,我发现了这个页面:https://api.cakephp.org/3.3/,它显示了应该可用的类,我发现如果我去my_cake_project/web/lib/Cake并运行ls,我会得到:

基础知识。php引导程序。php配置控制器错误I18n日志网络src测试实用程序视图bin缓存配置控制台核心事件许可证。txt模型路由测试套件版本。文本

但是我缺少了CakePHP3中应该包含的几个库,包括Http文件夹,我相信这就是为什么找不到Cake/Http/Server的原因。

我已经找到了触发错误的行:

// Bind your application to the server.
$server = new Server(new Application(dirname(__DIR__) . '/config'));

这是在app/webroot/index.php.

我试着将其拆分为:

$a = new Application(dirname(__DIR__) . '/config');
$server = new Server($a);

只是为了测试,我发现它还表示,类应用程序找不到。

这是app/webroot/index的整个文件。我有:

<?php
/**
 * The Front Controller for handling every request
 *
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 * @link          http://cakephp.org CakePHP(tm) Project
 * @since         0.2.9
 * @license       MIT License (http://www.opensource.org/licenses/mit-license.php)
 */
// for built-in server
if (php_sapi_name() === 'cli-server') {
    $_SERVER['PHP_SELF'] = '/' . basename(__FILE__);

    $url = parse_url(urldecode($_SERVER['REQUEST_URI']));
    $file = __DIR__ . $url['path'];
    if (strpos($url['path'], '..') === false && strpos($url['path'], '.') !== false && is_file($file)) {
        return false;
    }
}
require dirname(dirname(__DIR__)) . '/vendors/autoload.php';

use App\Application;
use Cake\Http\Server;

// Bind your application to the server.
$server = new Server(new Application(dirname(__DIR__) . '/config'));

// Run the request/response through the application
// and emit the response.
$server->emit($server->run());

因此,我一定也丢失了应用程序类的文件

并将我在lib/Cake文件夹中的内容与https://api.cakephp.org/3.3/I缺少一堆cakephp lib文件夹。

我似乎不仅缺少HttpHttp,而且还缺少:

`Auth`, `Collection`, `Database`, `Datasource`, `Filesystem`, `Form`, `Mailer`, `ORM`, `Shell`, `Utility`, and `Validation`

为什么我会错过这些?,我可以在哪里或如何找到所有缺少的库并将其安装到我的cakephp应用程序中?


共2个答案

匿名用户

您尚未将所有依赖项下载到供应商文件夹。我在Windows上使用OpenServer控制台和phpcomposer.phar更新对我很有帮助(我以前在本地安装过作曲家到我的项目)。在我看来,这是因为您安装了没有管理员权限的框架实例。

匿名用户

我也有同样的问题,很久以前我创建项目时,Composer还处于早期阶段,所以我没有通过它安装CakePHP。

为了解决这个问题,我不得不模仿作曲家。示例模板中的json文件然后运行php composer。药物更新。确保选择复制作曲家的正确分支。json文件。

我在迁移时也使用了这个工具。如果官方升级工具不适合您,您可以使用此工具。