質問編集履歴

2 ソースの追加について

fujirei

fujirei score 12

2016/03/19 15:42  投稿

PHPでログイン機能を実装
現在ドットインストールの「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```となっております。  
public_html/index.php =============================
```php
// public_html/index.php
<?php
// ユーザーの一覧
require_once(__DIR__ . '/../config/config.php');
// var_dump($_SESSION['me']);
$app = new MyApp\Controller\Index();
$app->run();
// $app->me()
// $app->getValues()->users
?>
<!DOCTYPE html>
<html lang="ja">
<head>
 <meta charset="utf-8">
 <title>Home</title>
 <link rel="stylesheet" href="styles.css">
</head>
<body>
 <div id="container">
   <form action="logout.php" method="post" id="logout">
     <?= h($app->me()->email); ?> <input type="submit" value="Log Out">
     <input type="hidden" name="token" value="<?= h($_SESSION['token']); ?>">
   </form>
   <h1>Users <span class="fs12">(<?= count($app->getValues()->users); ?>)</span></h1>
   <ul>
     <?php foreach ($app->getValues()->users as $user) : ?>
       <li><?= h($user->email); ?></li>
     <?php endforeach; ?>
   </ul>
 </div>
</body>
</html>
==========================================================
```
lib/Controller/index.php =============================
```php
// lib/Controller/index.php
<?php
namespace MyApp\Controller;
class Index extends \MyApp\Controller {
 public function run() {
   if (!$this->isLoggedIn()) {
     // login
     header('Location: ' . SITE_URL . '/test/login.php');
     exit;
   }
   // get users info
   $userModel = new \MyApp\Model\User();
   $this->setValues('users', $userModel->findAll());
 }
}
==========================================================
```
```php
// config/config.php
<?php
ini_set('display_errors', 1);
define('DSN', 'mysql:host=**********;dbname=**********;charset=utf8');
define('DB_USERNAME', '**********');
define('DB_PASSWORD', '**********');
define('SITE_URL', 'http://' . $_SERVER['HTTP_HOST']);
require_once(__DIR__ . '/../lib/functions.php');
require_once(__DIR__ . '/autoload.php');
session_start();
```
```php
// config/autoload.php
<?php
spl_autoload_register(function($class) {
 $prefix = 'MyApp\\';
 if (strpos($class, $prefix) === 0) {
   $className = substr($class, strlen($prefix));
   $classFilePath = __DIR__ . '/../lib/' . str_replace('\\', '/', $className) . '.php';
   if (file_exists($classFilePath)) {
     require $classFilePath;
   }
 }
});
```
  • PHP

    30569 questions

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

1 ソースの更新

fujirei

fujirei score 12

2016/03/19 14:26  投稿

PHPでログイン機能を実装
現在ドットインストールの「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です。
さくらのレンタルサーバにてPHPのバーションは5.6.18です。
申し訳ございません。うっかりして会員限定のページだったことに気づきませんでした。
public_html/index.php =============================
<?php
// ユーザーの一覧
require_once(__DIR__ . '/../config/config.php');
// var_dump($_SESSION['me']);
$app = new MyApp\Controller\Index();
$app->run();
// $app->me()
// $app->getValues()->users
?>
<!DOCTYPE html>
<html lang="ja">
<head>
 <meta charset="utf-8">
 <title>Home</title>
 <link rel="stylesheet" href="styles.css">
</head>
<body>
 <div id="container">
   <form action="logout.php" method="post" id="logout">
     <?= h($app->me()->email); ?> <input type="submit" value="Log Out">
     <input type="hidden" name="token" value="<?= h($_SESSION['token']); ?>">
   </form>
   <h1>Users <span class="fs12">(<?= count($app->getValues()->users); ?>)</span></h1>
   <ul>
     <?php foreach ($app->getValues()->users as $user) : ?>
       <li><?= h($user->email); ?></li>
     <?php endforeach; ?>
   </ul>
 </div>
</body>
</html>
==========================================================
lib/Controller/index.php =============================
<?php
namespace MyApp\Controller;
class Index extends \MyApp\Controller {
 public function run() {
   if (!$this->isLoggedIn()) {
     // login
     header('Location: ' . SITE_URL . '/test/login.php');
     exit;
   }
   // get users info
   $userModel = new \MyApp\Model\User();
   $this->setValues('users', $userModel->findAll());
 }
}
==========================================================
  • PHP

    30569 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る