У меня была такая же проблема, и нашел следующую статью, которая была очень полезна:
https://sentinelstand.com/article/laravel-5-optimization-commands
Единственное решение, которое работал для меня было вручную удалить bootstrap/cache/compiled.php
. Переключение порядка, в котором вызываются автозагрузчики в bootstrap/autoload.php
, не работает для меня, потому что у меня была та же проблема, наоборот. У меня был класс в compiled.php
, который вызывал что-то от autoload.php
до автозагрузки до autoload.php
.
В моем случае, я использую сочетание PSR4 и ручных сопоставлений классов в моем файле composer.json
. Я уверен, что это часть проблемы.(Не судите меня: это приложение было запущено в Laravel 3, поэтому требуется добавить пространство имен по всей базе кода :-).
Одна из причин, почему все может работать по-разному в разных средах, потому что команда artisan optimize
будет генерировать только файл bootstrap/cache/compiled.php
, если вы предоставите возможность --force
или если режим отладки является не включены. Поэтому вполне вероятно, что вы не получаете этот файл в разработке, потому что отладка включена, но : получение этого файла в стадии постановки и/или производства, потому что отладка не включена.
В конце концов, вот что я приземлился на качестве решения для развертывания производства:
artisan config:cache
artisan optimize
rm bootstrap/cache/compiled
- Update символическая, чтобы указать на новую версию.
Таким образом, вы все равно получаете bootstrap/cache/services.json
, что полезно, тогда как artisan clear-compiled
удаляет этот файл. Кроме того, будет очень короткий период времени, когда будет существовать bootstrap/cache/compiled.php
, поэтому важно запустить эти команды до, вы обновляете символическую ссылку, чтобы указать ваш веб-сервер в новой версии.
Стоит также не отметить, что compiled.php
файл, который создается artisan optimize
в Laravel 5.1 больше не генерируется в Laravel 5.4, поскольку, как Тейлор заявил, PHP 7 является гораздо более производительным и поэтому польза от комплектации все заявки классы в один файл, который предназначен для сохранения на дисках ввода/вывода, теперь игнорируется. Тейлор рекомендует включить и правильно настроить ваш OPcache - вы получите гораздо больше преимуществ от этого.
Возможный дубликат [PHP Неустранимая ошибка: не удается переопределить класс] (http://stackoverflow.com/questions/708140/php-fatal-error-cannot-redeclare-class) – netaholic
Нет, уже видел это. Благодарю. – markioooo
У меня вдруг такая же проблема. – Propaganistas