ラボ > サーバ:Xampp、Laravel、Lumen:インスト絡み

Laravel(5.2) Xamppにインストから最低限のセットまで

LaravelをPHP5.6.34にインストしたい。

作成日:2019-03-25, 更新日:2019-04-03

基本

LumenではなくLaravelをメインで使う予定なので少し突っ込んだトコまでやる。

Lumenのインストと基本同じなので、前よりは理解しやすい。

インスト手順(2019-03-25)

lumenのインストを参考にする(lumen Xamppにインスト

▼条件
・Xamppで動作させる
・テストだから「PHP5.6.34」で使いたい→「laravel5.2」を使いたい
・「xampp\htdocs\laravel-test」とし「http://localhost/laravel-test/」としたい

▼手順1-A:インストーラーを使ってプロジェクト作成
1.Laravelのインストーラーのインスト
2.プロジェクト作成

▼手順1-B:インストーラーを使わずにプロジェクト作成(今回はコッチで作業をすすめる)
1.プロジェクト作成

▼手順2:調整してブラウザで確認
1.調整してブラウザで確認
2.Hello Worldの出力

▼Composerが必須らしい
PHPのパッケージ管理「Composer」

手順1-A:インストーラーを使ってプロジェクト作成

1-A-1.Laravelのインストーラーのインスト

▼基本:CMDで下記実行(「C:\Users\〇〇〇\AppData\Roaming\Composer」あたりに出来る)

# composer global require "laravel/installer"

▼「xampp/composer」内に作りたい:CMDで「xampp/」にカレントを移しておく

# mkdir composer
# cd composer
# composer require "laravel/installer"

※「composer global require 〇〇〇」から「global」を取った「composer require 〇〇〇」

▼上記コマンド実行後、しばらく待つと下記が表示された

Using version ^2.0 for laravel/installer
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 13 installs, 0 updates, 0 removals
  - Installing symfony/process (v3.4.23): Loading from cache
  - Installing symfony/polyfill-ctype (v1.11.0): Downloading (100%)
  - Installing symfony/filesystem (v3.4.23): Downloading (100%)
  - Installing symfony/polyfill-mbstring (v1.11.0): Downloading (100%)
  - Installing psr/log (1.1.0): Loading from cache
  - Installing symfony/debug (v3.4.23): Loading from cache
  - Installing symfony/console (v3.4.23): Loading from cache
  - Installing guzzlehttp/promises (v1.3.1): Loading from cache
  - Installing ralouphie/getallheaders (2.0.5): Loading from cache
  - Installing psr/http-message (1.0.1): Loading from cache
  - Installing guzzlehttp/psr7 (1.5.2): Loading from cache
  - Installing guzzlehttp/guzzle (6.3.3): Loading from cache
  - Installing laravel/installer (v2.0.1): Downloading (100%)
symfony/console suggests installing symfony/event-dispatcher
symfony/console suggests installing symfony/lock
Writing lock file
Generating autoload files

1-A-2.プロジェクト作成

▼基本:CMDで下記実行(カレントは「xampp/htdocs」に移しておく)

# laravel new 〇〇〇

※「xampp/htdocs/〇〇〇」が作られる

手順1-B:インストーラーを使わずにプロジェクト作成

今回はこっちの「インストーラーを使わずにプロジェクト作成」で進める
※lumenのインストのときの面倒なコトって、インストーラーを使ったのが原因のような気がする

1-B-1.プロジェクト作成

▼基本:CMDで下記実行(カレントは「xampp/htdocs」に移しておく)

# composer create-project --prefer-dist laravel/laravel 〇〇〇

※「xampp/htdocs/〇〇〇」が作られる

古いバージョンのLaravelでプロジェクト作成

▼laravel5.2を使う場合

# composer create-project --prefer-dist laravel/laravel 〇〇〇 "5.2.*"

手順2:調整してブラウザで確認

ひとまずこの状態で確認(「xampp/htdocs/laravel-test」で作成)
URLは「http://localhost/laravel-test/public」

2-1.調整してブラウザで確認

「http://localhost/laravel-test/public」じゃなく「http://localhost/laravel-test」にしたい。

ソースの移動

▼「xampp/htdocs/laravel-test/public」と他のファイル・フォルダを分ける
1.「src」フォルダを作成して「xampp/htdocs/laravel-test/public」以外をいれる
2.「xampp/htdocs/laravel-test/public」の中身を「xampp/htdocs/laravel-test」に移動

▼こんな感じになる

移動前 移動後
■xampp/htdocs/laravel-test/
├app/
├bootstrap/
├public/
│├index.php
│├.htaccess
│└略
├.env
└略
■xampp/htdocs/laravel-test/
├src/ ←「/public」の中身以外をココにいれる
│├app/
│├bootstrap/
│├.env
│└略
├index.php ←「/public」の中身を「xampp/htdocs/laravel-test/」直下にいれる
├.htaccess
└略

▼「src/」の下に「.htaccess」を下記内容で作成・追加してアクセス禁止にしておく必要あり。

deny from all

※ブラウザからアクセスできない場所に配置 or アクセスできてもOKというなら必要無い

PATHの書換え

▼xampp/htdocs/laravel-test/index.php

略
//require __DIR__.'/../bootstrap/autoload.php';
require __DIR__.'/src/bootstrap/autoload.php';
略
//$app = require_once __DIR__.'/../bootstrap/app.php';
$app = require_once __DIR__.'/src/bootstrap/app.php';
略

▼xampp/htdocs/laravel-test/src/server.php

略
//require_once __DIR__.'/public/index.php';
require_once __DIR__.'/../index.php';

※ひょっとしたら「server.php」は削除しても問題ないかも。

ブラウザで確認

URLは「http://localhost/laravel-test/public」じゃなく「http://localhost/laravel-test」

パーミッション

・「src\bootstrap\cache」に書き込み権限が必要だそうだ。

Application Key

・「src\.env」の「APP_KEY」を設定する必要があるそうだ(「セキュリティは気にしない」っていうなら不要)
→comporserでプロジェクト作成しているなら自動で設定される

・「src\.env」が無い場合は「src\.env.example」を複製して作る
→「APP_KEY」を設定
※方法は未調査:「php artisan key:generate」で検索して調べる必要アリ

src\config\app.php:タイムゾーンなどの変更

「src\config\app.php」を確認して必要に応じて変更する

・url - 別のサーバに移すときやドメインが変わるときに変更すれば良さげ
・locale - ja(※初期値は「en」。fallback_localeは「en」のままで大丈夫(localeが見つからなかったときの言語の設定っぽい))

2-2.Hello Worldの出力

結構面倒・・・
1.ルーティングの設定
2.コントローラーの作成
3.ビューの作成

▼関係のあるファイルとディレクトリ
・src\app\Http\routes.php
・src\app\Http\Controllers
・src\resources\views

▼今回は「/hello」でアクセスがあったら「Hello World」を出力したHTML(ビュー)を表示させたい
・「/hello」は「コントローラー:HelloController」の「index」を表示
・「HTML(ビュー)」は「hello.blade.php」を表示
※「〇〇〇.blade.php」の「blade」は何を意味しているかは知らない。こういうお作法だと思う。

1.ルーティングの設定

▼「src\app\Http\routes.php」に追加

Route::get('hello', 'HelloController@index');

これで「/hello」にアクセスがあったら「コントローラー:HelloController」の「index」を表示になるハズ。

2.コントローラーの作成

・「src\app\Http\Controllers」の中に「HelloController.php」を作成

▼「src\app\Http\Controllers\Controller.php」を継承させる

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;

class HelloController extends Controller {
  public function index() {
    return view('hello');
  }
}

※コレで「src\resources\views\hello.blade.php」を読みにいくハズ

3.ビューの作成

▼「src\resources\views」に「hello.blade.php」を作成

<!DOCTYPE html>
<html>
    <head>
        <title>hello world</title>
    </head>
    <body>
        <p>hello world</p>
    </body>
</html>

「http://localhost/laravel-test/hello」で確認

関連項目

lumen Xamppにインスト
Laravel Xamppにインストから最低限のセットまで