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

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

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

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

Q&A

解決済

1回答

9879閲覧

Uncaught Errorはなぜ起こるのか?

Casablanca_mtg

総合スコア209

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

0グッド

0クリップ

投稿2018/04/02 00:47

編集2018/04/02 03:37

お世話になっております
今dotinstallで勉強中です。
PHPでログイン機能を実装しよう  https://dotinstall.com/lessons/sns_php_v3/35826
これの23章目ぐらいからUncaught Errorが出てしまい正しくブラウザ表示がしないです
mysql:5.6.37 PHP:7.1.10
************************************************************

Error内容

1[Mon Apr 2 09:15:55 2018] PHP Fatal error: Uncaught Error: Class 'MyApp\Controller\Index' not found in /home/vagrant/sns_php/public_html/index.php:9 2Stack trace: 3#0 {main} 4 thrown in /home/vagrant/sns_php/public_html/index.php on line 9 5[Mon Apr 2 09:15:55 2018] 192.168.33.1:49567 [200]: / - Uncaught Error: Class 'MyApp\Controller\Index' not found in /home/vagrant/sns_php/public_html/index.php:9 6Stack trace: 7#0 {main} 8 thrown in /home/vagrant/sns_php/public_html/index.php on line 9

public_html/index。php

1 2<?php 3 4// ユーザーの一覧 5 6require_once(__DIR__ . '/../config/config.php'); 7 8// var_dump($_SESSION['me']); 9 10$app = new MyApp\Controller\Index(); 11 12$app->run(); 13 14// $app->me() 15// $app->getValues()->users 16 17?> 18<!DOCTYPE html> 19<html lang="ja"> 20<head> 21 <meta charset="utf-8"> 22 <title>Home</title> 23 <link rel="stylesheet" href="styles.css"> 24</head> 25<body> 26 <div id="container"> 27 <form action="logout.php" method="post" id="logout"> 28 <?= h($app->me()->email); ?> <input type="submit" value="Log Out"> 29 <input type="hidden" name="token" value="<?= h($_SESSION['token']); ?>"> 30 </form> 31 <h1>Users <span class="fs12">(<?= count($app->getValues()->users); ?>)</span></h1> 32 <ul> 33 <?php foreach ($app->getValues()->users as $user) : ?> 34 <li><?= h($user->email); ?></li> 35 <?php endforeach; ?> 36 </ul> 37 </div> 38</body> 39</html> 40

config.php

1<?php 2 3ini_set('display_errors', 1); 4 5define('DSN', 'mysql:dbhost=localhost;dbname=dotinstall_sns_php'); 6define('DB_USERNAME', 'dbuser'); 7define('DB_PASSWORD', 'muku1130'); 8 9define('SITE_URL', 'http://' . $_SERVER['HTTP_HOST']); 10 11require_once(__DIR__ . '/../lib/functions.php'); 12require_once(__DIR__ . '/autoload.php'); 13 14session_start(); 15

Controller/index.php

1<?php 2 3namespace MyApp\Controller; 4 5class Index extends \MyApp\Controller { 6 7 public function run() { 8 if (!$this->isLoggedIn()) { 9 // login 10 header('Location: ' . SITE_URL . '/login.php'); 11 exit; 12 } 13 14 // get users info 15 $userModel = new \MyApp\Model\User(); 16 $this->setValues('users', $userModel->findAll()); 17 } 18 19}

イメージ説明

イメージ説明

よろしくご指導下さい

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

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

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

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

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

m.ts10806

2018/04/02 00:49

config.phpの内容もご提示ください。またエラーメッセージもコードブロック```で囲ってください。
Casablanca_mtg

2018/04/02 01:07

有難うございます。編集いたしましたのでよろしくお願い致します
m.ts10806

2018/04/02 01:20

'''' ではなく ``` です。ソースコードと同じです。細かいところですがよろしくお願いします。※質問編集時にリアルタイムでプレビューが出ますので、そちらを確認しながら編集すると確実です。
Casablanca_mtg

2018/04/02 03:19

ご指導ありがとうございます。markdown記法の事だったのですね。修正します
guest

回答1

0

ベストアンサー

Class 'MyApp\Controller\Index' not found

だからなわけですが、

index.phpを見ると Indexクラスを読み込んでいる箇所は見当たらず、また、autoload機構も実装されていないようです。

だからではないでしょうか?

投稿2018/04/02 00:52

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Casablanca_mtg

2018/04/02 01:10

お世話になります。この章は結構初心者にとっては長いため間違いも頻発して添付されているコードともたらしあわせながらやりましたが完結できません
退会済みユーザー

退会済みユーザー

2018/04/02 01:29

恐らくですが、/lib/Controller/index.php が Index クラスが記述されているファイルではないでしょうか?
退会済みユーザー

退会済みユーザー

2018/04/02 01:31

そうすると、上記コードにそって読み込むなら require_once(__DIR__ . '/../lib/Controller/index.php'); でよいかと思われます。
Casablanca_mtg

2018/04/03 01:33

有難うございます。/lib/Controller/index.php が Indexクラスが読み込まれている文では無いと思います。public_html/index.phpが上記に示したコードです 念の為lib/Controller/index.phpも乗せています。よろしくお願いいたします
退会済みユーザー

退会済みユーザー

2018/04/03 01:52

んー、全然分かってない感じですね。 >有難うございます。/lib/Controller/index.php が Indexクラスが読み込まれている文では無いと思います。 そうではなくて、/lib/Controller/index.php が Indexクラスが記述してあるファイルじゃないの? と言っているんです。 ファイル内容だけ貼って、どれがどのファイルなのか書いてくれてないので全然わからないんですけど class Index extends \MyApp\Controller { } があるのが「念の為lib/Controller/index.phpも乗せています。」の事ですよね? class Index って書いてあるでしょ? > Class 'MyApp\Controller\Index' not found っていうのは、Indexクラスが見つからないっていうエラーメッセージで、そのIndexクラスが記述してあるファイルをincludeなりrequireなりしてないから見つからないわけだから、Indexクラスが記述してあるファイルをincludeなりrequireなりすれば、そのエラーメッセージについては解消できますよ、って言ってるのです。
Casablanca_mtg

2018/04/03 02:16

有難うございます。再度やってみます。エラーの内容は理解できました(詳しくお教えいただいたので)ただ不思議なのは26章目まで控えのコードとチェックしたのですが同じでしたので何かが漏れているのかもしれません。でなければこのようなエラーメッセージは出ないですね。ありがとうございます
Casablanca_mtg

2018/04/04 13:15

お世話になります。エラーの原因が分かりました。 lib/Controller/index.php→lib/Controller/Index.phpでなければならなかったのでした。うまく表示されました。oIndex.phpの最初のファイル名を大文字で記述しないと認識されなかったのが原因でした。有難うございます
退会済みユーザー

退会済みユーザー

2018/04/04 13:23

んー、それ、なんか間違ってるんですけど、どうすっかなぁ…。 多分、半年とか1年後とかにさらに嵌るバグの温床な気もする…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問