PHP 致命错误:在我修复错误 Laravel 迁移后找不到类“App\Providers\ServiceProvider”:唯一键太长,
Posted
技术标签:
【中文标题】PHP 致命错误:在我修复错误 Laravel 迁移后找不到类“App\\Providers\\ServiceProvider”:唯一键太长,【英文标题】:PHP Fatal error: Class 'App\Providers\ServiceProvider' not found, after I fixed err Laravel migration: unique key is too long,PHP 致命错误:在我修复错误 Laravel 迁移后找不到类“App\Providers\ServiceProvider”:唯一键太长, 【发布时间】:2018-01-28 05:41:26 【问题描述】:我刚开始学习 Laravel 5.4 并尝试在 Laravel 中迁移用户表。当我运行迁移时,出现此错误:
[Illuminate\Database\QueryException] SQLSTATE[42000]:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 767 字节
在关注this tutorial之后,我现在又遇到了一个错误:
php 致命错误:找不到类“App\Providers\ServiceProvider”
我的迁移代码是
use Illuminate\Support\Facades\Schema;
public function boot()
//
Schema::defaultStringLength(191);
我做错了什么?
【问题讨论】:
您是创建了一个新的服务提供者并将上面的代码放入其中,还是将上面的代码放入了AppServiceProvider
类中?无论哪种方式,您能否发布文件的完整代码并识别它,这可能有助于我们帮助您解决问题。
我的代码在 AppServiceProvider 类中,我的整个代码是...,,,
你的AppServiceProvider
类中是否还有use Illuminate\Support\ServiceProvider;
语句?
不,我将其更改为此代码“使用 Illuminate\Support\Facades\Schema;”
不要替换任何东西,只是添加文章中的新东西。所以也保留之前的代码。
【参考方案1】:
问题是您缺少标识ServiceProvider
类所在位置的use
语句。由于AppServiceProvider
类扩展了ServiceProvider
,但没有use
语句,PHP 假定该类可以在与AppServiceProvider
相同的命名空间中找到。这就是它找不到\App\Providers\ServiceProvider
的原因——因为\App\Providers
是AppServiceProvider
类的命名空间。
试试这个
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
Schema::defaultStringLength(191);
/**
* Register any application services.
*
* @return void
*/
public function register()
//
【讨论】:
很好的解释 非常感谢@stratedge,它只能通过添加'use Illuminate\Support\ServiceProvider;'来工作使用我的代码,我做错的是改变而不是添加'use Illuminate\Support\Facades\Schema;'再次感谢您解决问题。以上是关于PHP 致命错误:在我修复错误 Laravel 迁移后找不到类“App\Providers\ServiceProvider”:唯一键太长,的主要内容,如果未能解决你的问题,请参考以下文章
运行 php artisan serve 命令时,laravel 无法打开流致命错误
如何修复wordpress中的php致命错误和http错误500
Laravel 4:PHP 致命错误:调用未定义的方法 Blueprint::int()
Laravel - PHP 致命错误:在迁移中找不到类“CreateMatchesTable”:刷新
如何解决 PHP 致命错误:未捕获的错误:在 laravel 版本更新时调用未定义的方法 Illuminate\Container\Container::basePath() 错误?