0

每当我运行工匠命令时,我都会收到以下错误消息:

{"error":{"type":"ReflectionException","message":"Class OrdersModel does not exist","file":"\/home\/vagrant\/Omono\/vendor\/laravel\/framework\/src\/Illuminate\/Container\/Container.php","line":552}}

这只发生在我的流浪测试服务器上,而不是在生产中。我试过跑步

composer dump-autoload

等等我已经签入了composer.json,里面有models文件夹。我还检查了 vendor/composer/autoload_classmap.php 并且它有我的映射:

'OrdersModel' => $baseDir . '/app/models/Orders.php',

我不确定还有什么可以尝试纠正这个问题。

编辑:请注意,我对 OrdersModel 或实际 larvel 应用程序上的任何其他类没有任何问题。

EDIT2 (重要??):因此,通过将跟踪语句添加为冗长似乎不起作用的艰巨任务,我发现问题出在创建服务提供者时,归结为在应用程序中创建“单例” . 我没有编写此代码,但看起来有一个接口(OrderRepositoryInterface)和一个映射到它的实现(DbOrderRepository)。文件开始如下

<?php namespace Omono\Repositories;

use OrdersModel as Order;

所以无论出于何种原因,这是它寻找 OrderModels 却找不到它的地方。我很确定这个模块在实际的网络应用程序中没有问题。因此,由于某种原因,只有在运行时才能在此文件夹中找到 OrdersModel artisan

编辑3:

php -v 给出:

PHP Warning:  Module 'mongo' already loaded in Unknown on line 0
PHP 5.5.12-2+deb.sury.org~trusty+1 (cli) (built: May 12 2014 13:48:43) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
    with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies
    with Xdebug v2.2.5, Copyright (c) 2002-2014, by Derick Rethans

我还应该指出,当我访问该网站时,一切都运行良好。OrdersModel 可以毫无问题地完成它应该做的事情,并且我没有收到任何错误。这仅在运行 artisan 命令时发生。也许不相关的是,每次我更新我的流浪测试服务器(有问题的服务器)时,我都需要运行 composer dumpautoload 以使几个类工作。

4

1 回答 1

0

好的,所以在玩了很多之后,我设法解决了这个问题。这是一个非常具体的问题,但我会发布我的答案以防万一有人发现这个问题。

因此,从编辑 2 开始,我决定注释掉 serviceprovider 中引用此类的行......手指交叉......它起作用了。有点儿。由于行使用日志,它实际上吐出了一个错误;在我的代码中。有趣的。让我们删除它。有用。所以我取消了我的课的注释,在课堂上我注意到我也使用了 Log。在这种情况下,它不在默认命名空间中,所以这是正确的,但我实际上并没有在任何地方调用 Log,所以,到底是什么,不妨删除它。没有骰子。然后在这个类和一个几乎相同的类之间来回切换。我注意到

use MyApp\Repositories\OrderRepositoryInterface;

等一下。这不是必需的;因为这是在同一个命名空间中。我删除了那条线。低,看哪,一切都是固定的。

概括; 嗯……我不知道。我根本不知道错误消息是什么意思,但基本上只是在您的服务提供商中检查这些内容。我也读过很多人遇到问题,因为他们使用而不是 .

于 2015-01-11T10:47:28.037 回答