Я развертываю проект barebone Laravel для Microsoft Azure, но всякий раз, когда я пытаюсь выполнить php artisan migrate
я получаю ошибку:
[2015-06-13 14:34:05] production.ERROR: исключение 'Symfony \ Component \ Debug \ Exception \ FatalErrorException' с сообщением 'Class' 'not found' в D: \ home \ site \ vendor \ laravel \ framework \ SRC \ Осветите \ Database \ Миграции \ Migrator.php: 328
- Невозможно создать абстрактный класс ... в appDevDebugProjectContainer.php - Symfony2
- Symfony2 MVC: где мой код?
- ClassNotFoundException: Попытка загрузить класс «TwigExtension» из глобального пространства имен
- Как включить strip client api с symfony2. Как включить файлы без классов в symfony2
- Устранение неполадок «Нет такого файла или каталога» при запуске «php app / console doctrine: schema: create`
- Symfony - значения Pasing от одной формы к другой
Трассировки стека:
#0 {main}
В чем может быть проблема? большое спасибо
Класс миграции
<?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateUsersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('users', function(Blueprint $table) { $table->bigIncrements('id'); $table->string('name', 50); $table->string('surname', 50); $table->bigInteger('telephone'); $table->string('email', 50)->unique(); $table->string('username', 50)->unique(); $table->string('password', 50); $table->boolean('active')->default(FALSE); $table->string('email_confirmation_code', 6); $table->enum('notify', ['y', 'n'])->default('y'); $table->rememberToken(); $table->timestamps(); $table->index('username'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('users'); } }
по<?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateUsersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('users', function(Blueprint $table) { $table->bigIncrements('id'); $table->string('name', 50); $table->string('surname', 50); $table->bigInteger('telephone'); $table->string('email', 50)->unique(); $table->string('username', 50)->unique(); $table->string('password', 50); $table->boolean('active')->default(FALSE); $table->string('email_confirmation_code', 6); $table->enum('notify', ['y', 'n'])->default('y'); $table->rememberToken(); $table->timestamps(); $table->index('username'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('users'); } }
Для пользователей автозагрузчика PSR-4 (composer.json):
Храните папку миграции внутри массива classmap и не включайте ее внутри объекта psr-4 под автозагрузкой. Поскольку миграция основного класса Migrator не поддерживает пространство имен. Например;
"autoload": { "classmap": [ "app/database/migrations" ], "psr-4": { "Acme\\controllers\\": "app/controllers" } }
Затем выполните:
php artisan clear-compiled composer dump-autoload php artisan optimize
autoload_psr4.php
и почти опустошает autoload_classmap.php
. autoload_classmap.php
. С этого момента вам больше не придется это делать, и любые новые миграции будут работать правильно.
Если при выполнении миграции вы получаете «Не найденную ошибку класса», попробуйте запустить эту команду.
composer dump-autoload
затем повторная выдача команды migrate. Подробнее см. На официальном сайте (#Running Migrations): http://laravel.com/docs/master/migrations#running-migrations
У меня была такая же проблема некоторое время назад. По-видимому, это распространенная проблема, потому что в документации для Laravel она даже предлагает: http://laravel.com/docs/master/migrations#running-migrations
В основном все, что вам нужно сделать, это обновить некоторые файлы композитора. Просто запустите:
composer dump-autoload
Это обновит файлы автозагрузки композитора, а затем вы сможете запустить обычную миграцию, и это должно сработать! Самый лучший.
Я также запускаю ту же проблему.
Решением для меня было удаление файла миграции и удаление записи из таблицы «миграции» в базе данных.
После этого я побежал
компоновщик-автозагрузка
и, наконец, смог выполнить сброс / откаты миграции.
Я удалил один из файлов миграции. столкнулись с одной и той же проблемой, в то время как php artisan migrate:rollback
Затем я попробовал composer dump-autoload
. Снова то же самое.
Я восстановил удаленный файл и попробовал composer dump-autoload
и php artisan migrate:rollback
. Оно работает.
У меня была аналогичная ситуация (ошибка класса не найдена) после переноса проекта Laravel 5.2 dev на производство. Производственный сервер искал класс «проект», но имя контроллера было Project.php. Как только я переименовал файл в project.php, было хорошо идти.
При попытке переноса моего проекта я получал тот же класс, который не найден. Иногда вы получаете простые вещи. В моем случае я заметил, что мое имя класса было неверным в моем файле миграции из-за того, что я вносил изменения переименования на раннем этапе и не выполнял эти изменения повсюду.
После исправления имени класса я выполнил композицию dump-autoload, и моя проблема исчезла.
HTH кто-то:]