Всякий раз, когда я запускаю команды ремесленника, я получаю следующее сообщение об ошибке:
{"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 и там есть папка моделей. Я также проверил в 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 в этой папке, только когда работает ремесленник.
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 делает то, что должен делать без проблем, и я не получаю ошибок. Это происходит только при выполнении команды ремесленника. Возможно, это не связано с тем, что каждый раз, когда я обновляю свой тестовый сервер vagrant (тот, у которого проблема), мне нужно запускать dumpautoload composer, чтобы пара классов работала.
Итак, после долгих тренировок мне удалось решить эту проблему. Это очень специфическая проблема, но я опубликую свой ответ на тот случай, если кто-нибудь найдет этот вопрос.
Итак, после редактирования 2, я решил закомментировать строку в сервис-провайдере, которая ссылается на этот класс … скрестив пальцы … это сработало. Вид. Это на самом деле выплюнуло ошибку из-за строки use Log; в моем коде. Интересно. Давайте удалим это. Оно работает. Поэтому я раскомментировал свой класс, и в классе я заметил, что я также использовал журнал. В этом случае его нет в пространстве имен по умолчанию, так что это было правильно, но я на самом деле нигде не вызывал Log, так что, черт возьми, он мог бы его удалить. Нет кости. Затем переключение между этим классом и почти идентичным классом. Я заметил
use MyApp\Repositories\OrderRepositoryInterface;
Подождите минуту. Это не нужно; как это в том же пространстве имен. Я удалил эту строку. Низко и вот все исправлено.
Резюме; хорошо … я не знаю. Я вообще не знаю, как это означало сообщение об ошибке, но в основном просто проверяйте подобные вещи у своих поставщиков услуг. Я также читал о многих людях, имеющих проблемы, потому что они использовали вместо.
Других решений пока нет …