php artisan 上的 ReflectionException 错误

ReflectionException error on php artisan

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

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

这只发生在我的 vagrant 测试服务器上,而不是在生产环境中。我试过了 运行ning

composer dump-autoload

等我已经签入 composer.json 并且其中有模型文件夹。我还检查了 vendor/composer/autoload_classmap.php 并且它有我的映射:

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

我不确定还能尝试什么来解决这个问题。

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

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

<?php namespace Omono\Repositories;

use OrdersModel as Order;

所以无论出于何种原因,它都是在此处查找 OrderModels 但找不到。我很确定在实际的网络应用程序中这个模块没有问题。所以出于某种原因它无法在此文件夹中找到 OrdersModel,仅当 运行ning 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 命令时发生。也许不相关的是每次我更新我的 vagrant 测试服务器(有问题的那个)我需要 运行 composer dumpautoload 几个 类 才能工作。

好的,经过大量尝试后,我设法解决了这个问题。这是一个非常具体的问题,但我会 post 我的回答以防万一有人发现这个问题。

因此,在编辑 2 之后,我决定在服务提供者中注释掉引用此 class 的那一行……祈祷吧……它奏效了。有点儿。由于使用日志行,它实际上吐出一个错误;在我的代码中。有趣的。让我们删除它。有用。所以我取消了 class 的注释,在 class 中我注意到我也使用了 Log。在这种情况下,它不在默认命名空间中,所以这是正确的,但我实际上并没有在任何地方调用 Log,所以,见鬼,还不如删除它。没有骰子。然后在 class 和几乎相同的 class 之间切换。我注意到

use MyApp\Repositories\OrderRepositoryInterface;

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

总结;好吧……我不知道。我根本不知道错误消息是什么意思,但基本上只是检查您的服务提供商中的此类内容。我还读到很多人遇到问题,因为他们使用而不是 .