質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.75%

  • Laravel 5

    1695questions

    Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

laravelが難しくてうまくいきません

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 642
退会済みユーザー

退会済みユーザー

laravelが難しくてうまくいきません

\Desktop\images\gulp-folder\website\php\project1>php artisan migrate

[Symfony\Component\Debug\Exception\FatalThrowableError]
Class 'App\Providers\Schema' not found

となってしまいます。
前は動いてくれてlaravelという画面が出てきました。


tree /F
フォルダー パスの一覧

C:.
│ .env.env.example.gitattributes.gitignore
│ artisan
│ composer.json
│ composer.lock
│ package.json
│ phpunit.xml
│ server.php
│ webpack.mix.js
│ yarn.lock
│
├─app
│ │ User.php
│ │
│ ├─Console
│ │ Kernel.php
│ │
│ ├─Exceptions
│ │ Handler.php
│ │
│ ├─Http
│ │ │ Kernel.php
│ │ │
│ │ ├─Controllers
│ │ │ │ Controller.php
│ │ │ │
│ │ │ └─Auth
│ │ │ ForgotPasswordController.php
│ │ │ LoginController.php
│ │ │ RegisterController.php
│ │ │ ResetPasswordController.php
│ │ │
│ │ └─Middleware
│ │ EncryptCookies.php
│ │ RedirectIfAuthenticated.php
│ │ TrimStrings.php
│ │ TrustProxies.php
│ │ VerifyCsrfToken.php
│ │
│ └─Providers
│ AppServiceProvider.php
│ AuthServiceProvider.php
│ BroadcastServiceProvider.php
│ EventServiceProvider.php
│ RouteServiceProvider.php
│
├─bootstrap
│ │ app.php
│ │
│ └─cache
│ .gitignore
│ packages.php
│ services.php
│
├─config
│ app.php
│ auth.php
│ broadcasting.php
│ cache.php
│ database.php
│ filesystems.php
│ mail.php
│ queue.php
│ services.php
│ session.php
│ view.php
│
├─database
│ │ .gitignore
│ │
│ ├─factories
│ │ UserFactory.php
│ │
│ ├─migrations
│ │ 2014_10_12_000000_create_users_table.php
│ │ 2014_10_12_100000_create_password_resets_table.php
│ │
│ └─seeds
│ DatabaseSeeder.php
│
├─public
│ │ .htaccess
│ │ favicon.ico
│ │ index.php
│ │ robots.txt
│ │
│ ├─css
│ │ app.css
│ │
│ └─js
│ app.js
│
├─resources
│ ├─assets
│ │ ├─js
│ │ │ │ app.js
│ │ │ │ bootstrap.js
│ │ │ │
│ │ │ └─components
│ │ │ Example.vue
│ │ │
│ │ └─sass
│ │ app.scss
│ │ _variables.scss
│ │
│ ├─lang
│ │ └─en
│ │ auth.php
│ │ pagination.php
│ │ passwords.php
│ │ validation.php
│ │
│ └─views
│

本当に初心者にもわかるようにかみ砕いた説明をしてくれるサイトが見当たらなく
http://libro.tuyano.com/index2?id=3766003
を参考に行っているのですが、こちらはディレクトリ構成が大幅に変わってしまった5.3移行の情報と考えてよさそうでしょうか?

できればわかりやすく5.6でも問題なく使える所があるとありがたいです。

参考先を翻訳すると下記のように出てきたので、つまりAppServiceProvider.phpにuse Illuminate\Support\Facades\Schema;を加える必要があるという事でしょうか?
英語なのでよくわかりません。

>>>
AppServiceProvider.phpでは、必要なuseステートメントをファイルの先頭に含めませんでした。

use Illuminate\Support\Facades\Schema;

これは、 Schema::defaultStringLength(191);単純に呼び出すことができるように、Schemaクラスへの名前空間パスを定義しますSchema::defaultStringLength(191); ブート方法で。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • masaya_ohashi

    2017/10/18 13:29

    前は動いていたという前の環境と、今の環境で何を変えたかを明記してください。例えば、composer.jsonのLaravelのバージョンを書き換えたとか。

    キャンセル

  • natady

    2017/10/18 14:37

    名前空間が理解できると今後同じような問題が発生した際に対処できるようになると思いますので、こちらをご一読しておくことをおすすめします。http://php.net/manual/ja/language.namespaces.php

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2017/10/18 16:41

    「名前をかぶらせない仕組み」のようですね。Class 'App\Providers\Schema'という名前のクラス名が被っているのが原因という事ですか?そんなクラスを作った記憶はないのですが

    キャンセル

  • natady

    2017/10/18 17:39 編集

    該当ファイル内に記述しているSchemaクラスは現在`App\Providers\Schema`を差しています。`App\Providers`は該当ファイルの名前空間です。ですが、`App\Providers\Schema`というクラスはありませんのでエラーが発生しています。Laravelは`Illuminate\Support\Facades\Schema`というクラスを用意しています。これを使うためにはファイルの先頭に`use Illuminate\Support\Facades\Schema;`と記述するか、`Illuminate\Support\Facades\Schema::someMethod()`のように完全修飾名を使う必要があります。

    キャンセル

回答 2

checkベストアンサー

+1

おそらくほぼ同様の症状かと思います。
http://munyagu.com/1362/

Class 'App\Providers\Schema' not foundで検索すればすぐ見つかりました。エラーで困ったときは、まず誰かに聞く前に自分でも少し調査しましょう。

 追記

参考先を翻訳すると下記のように出てきたので、つまりAppServiceProvider.phpにuse Illuminate\Support\Facades\Schema;を加える必要があるという事でしょうか?
英語なのでよくわかりません。

試してみればすぐわかることではないですか?もし上記参考と同じ現象であればそれで解決するでしょう。解決しなければ別の問題であるということです。

 追記の追記

Class 'App\Providers\Schema' not foundというエラーが出る理由は、App\Providers\AppServiceProviderの中でSchema::defaultStringLength(191)という行があるからです。ここでSchemaというクラスのdefaultStringLengthというメソッドを呼び出そうとしています。
ここでとくに名前空間の指定が無いため、自分自身(AppServiceProvider)と同一の名前空間(App\Providers)にそのSchemaというクラスがあるはずとPHPがApp\Providers\Schemaというクラスを探そうとします。しかし、そんなクラスは存在しないためnot foundとなります。

ここで先程修正したコードで書いたuse Illuminate\Support\Facades\Schema;という行です。このコード(AppServiceProvider)でSchemaって言ったらIlluminate\Support\Facades\Schemaのことである、とPHPに伝える役目をしています。以降はSchemaという表記イコールIlluminate\Support\Facades\Schemaと解釈されるため、エラーがなくなったわけです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/18 16:53

    確かに出来ました。ありがとうございました。

    ただ理由がわかりません。
    「名前をかぶらせない仕組み」のようですね。Class 'App\Providers\Schema'という名前のクラス名が被っているのが原因という事ですか?そんなクラスを作った記憶はないのですが

    キャンセル

  • 2017/10/18 17:11

    むしろ「そのApp\Providers\Schemaがないから」エラーになっているわけです。なぜその修正で直るのかは追記しました。

    キャンセル

  • 2017/10/18 17:15

    ありがとうございます。

    >>>
    Schema::defaultStringLength(191)という行があるからです。ここでSchemaというクラスのdefaultStringLengthというメソッドを呼び出そうとしています。

    キャンセル

  • 2017/10/18 17:16

    >>>
    Schema::defaultStringLength(191)という行があるからです。ここでSchemaというクラスのdefaultStringLengthというメソッドを呼び出そうとしています。

    この記述を自分で行って記憶が正直ないのですが、始めからあったという事でしょうか?

    それとも自分で過去に追記してしたという事でしょうか?

    はじめからなら、不備があったという事になりますね。無料なので文句は言いませんが

    キャンセル

  • 2017/10/18 17:24

    https://qiita.com/beer_geek/items/6e4264db142745ea666f
    このへんの内容に身に覚えは無いですか?最初からあったということはないはずです。このコードはMySQL特有の問題に対する対処なので、最初からLaravelにこの対処が入っていることはないです。おそらくこの対処をする際にSchema::defaultStringLength(191)を書くまではよかったものの、useを書き忘れていたのが原因ではないでしょうか。

    キャンセル

  • 2017/10/18 18:26

    自分で記載してかつ
    use Illuminate\Support\Facades\Schema;
    を入れ忘れたという事ですね。

    このようなことがありうるので、プロジェクトフォルダごとコピペしておいた方がよさそうですね。

    キャンセル

  • 2017/10/19 13:28

    フォルダごとコピペというのは確かにバックアップを取るという面においてよい判断かと思います。が、どうせなら少しステップアップしてはいかがでしょう。バージョン管理ツールと呼ばれるものの現在のトレンドとしてGitというツールがあります。これは「誰が」「どのとき」「どのソースのどの行」を修正したのかが記録されていくツールです。ここに入門用のサイトがありますので、一度御覧ください。
    https://www.backlog.jp/git-guide/

    キャンセル

  • 2017/10/19 13:31

    ありがとうございました。

    プロジェクトをフォルダごとコピーすればバックアップはできるがgitを使うともっと最新のバックアップができるのですね

    キャンセル

  • 2017/10/19 13:40

    フォルダをまるごとコピーすると容量は倍々に増えていきますが、gitはテキストデータの「差分」だけを蓄積していくので容量も少なく済みます。履歴を追うことも容易いですし、誰かと一緒に作業するときに「同じファイルを編集して相手の修正を上書きしてしまう」という事故も防がれますので、個人でやっているうちからこういったバージョン管理ツールに慣れておくと幸せになれますよ。

    キャンセル

  • 2017/10/19 13:45

    ありがとうございました。
    そんなメリットもあるとは初めて知りました。

    キャンセル

+1

エラーに関しては、masaya_ohashさんの内容で解決できるかと思いますが、最近ドットインストールのLaravel入門がLaravel5.5にアップデートしたようなので、プレミアムプランですが一度通してやってみると取っ掛かりとしては理解が深まるかと思います。  
Laravel 5.5入門 (全31回)
クラスが見つからないエラーに関しては、composerのautoload機能等の理解も重要です。
Laravelで学ぶcomposer

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/18 15:46

    参考先を翻訳すると下記のように出てきたので、つまりAppServiceProvider.phpにuse Illuminate\Support\Facades\Schema;を加える必要があるという事でしょうか?
    英語なのでよくわかりません。

    >>>
    AppServiceProvider.phpでは、必要なuseステートメントをファイルの先頭に含めませんでした。

    use Illuminate\Support\Facades\Schema;

    これは、 Schema::defaultStringLength(191);単純に呼び出すことができるように、Schemaクラスへの名前空間パスを定義しますSchema::defaultStringLength(191); ブート方法で。


    こちらの作業で問題ないという事でしょうか?

    キャンセル

  • 2017/10/18 15:57

    多分そうだと思うので、masaya_ohashさんに聞いてみてください。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Laravel 5

    1695questions

    Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。