現在ドットインストールの「PHPでログイン機能を実装しよう」(http://dotinstall.com/lessons/sns_php_v3)を勉強しておりまして、ローカル開発環境では問題なく動作確認ができたのですが、
さくらのレンタルサーバ(スタンダード)へ実装すると下記のエラーから進めません。
Fatal error: Class 'MyApp\Controller\Index' not found in /ローカルホスト/test/public_html/index.php on line 8
ローカル開発環境では問題なく動作することを考えると、さくらのサーバの問題なのか、記述の問題なのか全く見当がつかなくなりました。
自分なりにいろいろと調べてみたのですが、解決方法が見当たらないため、ご教授いただけますでしょうか。
ちなみに、ローカル開発環境はVAGRANTでcentosを立ち上げて行っています。
さくらのレンタルサーバにてPHPのバーションは5.6.18です。
申し訳ございません。うっかりして会員限定のページだったことに気づきませんでした。
ディレクトリはconfig
、lib
、public_html
となっております。
php
1// public_html/index.php 2<?php 3// ユーザーの一覧 4 5require_once(__DIR__ . '/../config/config.php'); 6 7// var_dump($_SESSION['me']); 8 9$app = new MyApp\Controller\Index(); 10 11$app->run(); 12 13// $app->me() 14// $app->getValues()->users 15 16?> 17<!DOCTYPE html> 18<html lang="ja"> 19<head> 20 <meta charset="utf-8"> 21 <title>Home</title> 22 <link rel="stylesheet" href="styles.css"> 23</head> 24<body> 25 <div id="container"> 26 <form action="logout.php" method="post" id="logout"> 27 <?= h($app->me()->email); ?> <input type="submit" value="Log Out"> 28 <input type="hidden" name="token" value="<?= h($_SESSION['token']); ?>"> 29 </form> 30 <h1>Users <span class="fs12">(<?= count($app->getValues()->users); ?>)</span></h1> 31 <ul> 32 <?php foreach ($app->getValues()->users as $user) : ?> 33 <li><?= h($user->email); ?></li> 34 <?php endforeach; ?> 35 </ul> 36 </div> 37</body> 38</html>
php
1// lib/Controller/index.php 2<?php 3 4namespace MyApp\Controller; 5 6class Index extends \MyApp\Controller { 7 8 public function run() { 9 if (!$this->isLoggedIn()) { 10 // login 11 header('Location: ' . SITE_URL . '/test/login.php'); 12 exit; 13 } 14 15 // get users info 16 $userModel = new \MyApp\Model\User(); 17 $this->setValues('users', $userModel->findAll()); 18 } 19 20}
php
1 2// config/config.php 3<?php 4ini_set('display_errors', 1); 5 6define('DSN', 'mysql:host=**********;dbname=**********;charset=utf8'); 7define('DB_USERNAME', '**********'); 8define('DB_PASSWORD', '**********'); 9 10define('SITE_URL', 'http://' . $_SERVER['HTTP_HOST']); 11 12require_once(__DIR__ . '/../lib/functions.php'); 13require_once(__DIR__ . '/autoload.php'); 14 15session_start();
php
1// config/autoload.php 2<?php 3spl_autoload_register(function($class) { 4 $prefix = 'MyApp\\'; 5 if (strpos($class, $prefix) === 0) { 6 $className = substr($class, strlen($prefix)); 7 $classFilePath = __DIR__ . '/../lib/' . str_replace('\\', '/', $className) . '.php'; 8 if (file_exists($classFilePath)) { 9 require $classFilePath; 10 } 11 } 12});
回答2件
あなたの回答
tips
プレビュー