【发布时间】:2015-03-09 01:59:11
【问题描述】:
每当我运行 artisan 命令时,我都会收到以下错误消息:
{"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 时。
EDIT3:
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 以使几个类工作。
【问题讨论】:
-
Orders.php 是否存在于 'app/models/' 中?该文件是否包含名为“OrdersModel”的类?
-
Orders.php 确实存在,并且包含 OrdersModel 类,它扩展了 Eloquent。
-
命名空间问题? Orders.php 中声明了什么命名空间,应用的根命名空间是什么?
-
如果你从命令行输入
php -v会发生什么?你运行的是什么版本? -
没有声明命名空间,所以默认命名空间。据我所知,它与模型文件夹中的所有其他模型(~30)相同,尽管这个模型要大得多(~1500 行)。
标签: php laravel laravel-4 laravel-artisan