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

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

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

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

Q&A

解決済

1回答

5298閲覧

laravelでコントローラフォルダにあるファイルのClass does not existが解決できない

tamago83

総合スコア60

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

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

0グッド

1クリップ

投稿2019/09/12 02:51

発生している問題・エラーメッセージ

サーバー上でartisan route:listを実行すると下記のエラーが出力されます。
なお、ローカルは正常に動作し、同じ物をアップロードしています。

error

1 ReflectionException : Class App\Http\Controllers\admin\AdminController does not exist

該当のフォルダ構成及びソースコード

folder

1├─app 2│ ├─Console 3│ ├─Exceptions 4│ ├─Http 5│ │ ├─Controllers 6│ │ │ ├─Admin 7│ │ │ │ ├─AdminController.php

php

1<?php 2namespace App\Http\Controllers\Admin; 3 4use Illuminate\Http\Request; 5use App\Http\Controllers\Controller; 6use App\Models\AccountInfoModel; 7 8class AdminController extends Controller 9{ 10 public function __construct() 11 { 12 $this->middleware('auth'); 13 } 14 15 public function index() 16 { 17 $prefix = str_replace('/', '', Request()->route()->getPrefix()); 18 return view("$prefix.home"); 19 } 20} 21

試したこと

・vendorフォルダの削除
・class mapの再作成
composer dump-udpate
composer dump-autoload
・classマップの確認
vendor/composer/autoload_classmap.php: 'App\Http\Controllers\Admin\AdminController' => $baseDir . '/app/Http/Controllers/Admin/AdminController.php',
vendor/composer/autoload_static.php: 'App\Http\Controllers\Admin\AdminController' => DIR . '/../..' . '/app/Http/Controllers/Admin/AdminController.php',

以上は全て失敗

ControllersフォルダのAdminを、adminに変更したところ正常に動作しました。

補足情報(FW/ツールのバージョンなど)

php 7.3
laravel 5.7

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

admin

Admin
は別物です。

投稿2019/09/12 02:55

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tamago83

2019/09/12 03:12

理解できず申し訳ありません。 別のファイルにアクセスを行っていると言うことでしょうか? なお、Windowsのローカル環境でAdmin\AdminController.phpは正常に動作していますが、linux(レンタルサーバなので詳細不明)では、admin\AdminController.phpで動作しています。
退会済みユーザー

退会済みユーザー

2019/09/12 03:43 編集

エラーメッセージの方は『App\Http\Controllers\admin\AdminController』admin と小文字、 でも定義では、「namespace App\Http\Controllers\Admin;」となっている。 つまり、コントローラを呼び出している(呼び出そうとしている)どこかのファイルから、admin/AdminController と書いて呼び出そうとしているということ
tamago83

2019/09/12 05:11

ありがとうございます。 Windowsで成功しているのは、大文字小文字を無視している(わざとエラーにして確認するとwindowsでも小文字のadminでアクセスしてました)ため、正常に動作しているように見えているようです。 grepでaminを捜したのですが、該当する物はなく、adminをAdministratorに変更しても、なぜかadministratorでのアクセスなっております。 なお、web.phpにルートを記述して、最初にアクセスするcontrollerが今回のAdminControllerになります。
退会済みユーザー

退会済みユーザー

2019/09/12 05:14

Windowsはファイルシステムにおいて大文字小文字を区別しません。Linuxとそこは異なります。コントローラを呼び出すのは大抵、web.php くらいしかないのだから、そこを確認してください。自分で発見できないのであれば、質問文に記述してください。
tamago83

2019/09/12 06:54 編集

いろいろご指導ありがとうございます。やっとわかりました。 namespaceの間違いでした。 コピペばかりで、考えて行わない自分が悲しいです。 Route::group(['middleware' => 'web'], function () { Auth::routes(); Route::prefix('admin')->name('admin.')->namespace('admin※間違い')->group(function(){ Route::get('/', 'AdminController@index')->name('index'); Route::get('/mail', 'AdminController@mail')->name('mail'); }); }); いろいろとありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問