Laravel開発環境の構築方法(xampp + composer)

目次

スポンサードリンク

この記事では、xamppとcomposerを使って、Laravelでウェブアプリを開発するための環境をWindows上に構築する方法を解説します。

最新の Laravel では、Docker Desktop を使用する Laravel Sail で開発環境を構築する方法が推奨のようです。Docker Desktop を利用した方法は別の記事で解説します。

何らかの理由で Docker を使いたくない、または使えない人はこちらの手順も検討してみてください。

ツールのダウンロード

まずはツールをダウンロードしましょう。必要なのは以下の二つです。

XAMPP

以下にアクセスして自身のPCにあったものをダウンロードしましょう。特に拘りがなければ最新のバージョンをダウンロードしましょう。今回は PHP 8.2.4 をダウンロードしておきます。

https://www.apachefriends.org/download.html

XAMPPのダウンロード画面

XAMPPとは

  • Webアプリの実行に必要なソフトウェアをまとめてインストールできる
  • Apache、MariaDB、phpMyAdmin などが含まれる
  • 開発元は Apache Friends
  • GPLライセンス
  • 公式サイト https://www.apachefriends.org/jp/

Composer

https://getcomposer.org/download/

Composerのダウンロード画面

Composer-Setup.exe のリンクをクリックするとインストーラーをダウンロードすることができます。

Composerとは

  • PHP向けのパッケージ管理システム
  • パッケージ導入する際のデファクトスタンダード
  • パッケージ間の依存関係を解消してくれる
  • Nils AdermannとJordi Boggianoにより開発
  • MITライセンス
  • 公式サイト https://getcomposer.org/

XAMPPのインストール

インストールはダウンロードした実行ファイルをクリックして画面に従って進んでいくだけです。 インストールするソフトウェアを選択する画面があるので、不要なものはチェックを外しておきましょう。

この画面が立ち上がればOKです。 XAMPPのスクショ

Composer のインストール

Composer-Setup.exe をダブルクリックで実行しましょう。「Developer mode」のチェックはしないままでOKです。チェックするとアンインストーラーがインストールされません。 PHPの選択ではXAMPPのものを選択しておきます。

コマンドプロンプトを起動して以下のコマンドを実行しましょう。Composerのバージョンが表示されればインストールは完了です。

C:\Users\XXXXX>composer --version
Composer version 2.6.5 2023-10-06 10:11:52

Laravelのダウンロード

コマンドプロンプトで以下コマンドを実行しLaravelをダウンロードします。 今回はCドライブ直下に apps というフォルダを作りその中で作業します。 このコマンドを実行すると pj1 というフォルダが出来上がり、その中にLaravelの動作に必要なファイルが展開されます。

C:\>mkdir apps
C:\>cd apps
C:\apps>composer create-project laravel/laravel pj1

私が試したタイミングでは以下パッケージがダウンロードされました。

  - Downloading doctrine/inflector (2.0.8)
  - Downloading doctrine/lexer (3.0.0)
  - Downloading symfony/polyfill-ctype (v1.28.0)
  - Downloading webmozart/assert (1.11.0)
  - Downloading dragonmantank/cron-expression (v3.3.3)
  - Downloading symfony/deprecation-contracts (v3.3.0)
  - Downloading psr/container (2.0.2)
  - Downloading fakerphp/faker (v1.23.0)
  - Downloading symfony/polyfill-php80 (v1.28.0)
  - Downloading symfony/polyfill-php83 (v1.28.0)
  - Downloading symfony/polyfill-mbstring (v1.28.0)
  - Downloading symfony/http-foundation (v6.3.5)
  - Downloading fruitcake/php-cors (v1.3.0)
  - Downloading psr/http-message (2.0)
  - Downloading psr/http-client (1.0.3)
  - Downloading ralouphie/getallheaders (3.0.3)
  - Downloading psr/http-factory (1.0.2)
  - Downloading guzzlehttp/psr7 (2.6.1)
  - Downloading guzzlehttp/promises (2.0.1)
  - Downloading guzzlehttp/guzzle (7.8.0)
  - Downloading guzzlehttp/uri-template (v1.0.2)
  - Downloading laravel/pint (v1.13.3)
  - Downloading symfony/polyfill-intl-normalizer (v1.28.0)
  - Downloading symfony/polyfill-intl-grapheme (v1.28.0)
  - Downloading symfony/string (v6.3.5)
  - Downloading symfony/service-contracts (v3.3.0)
  - Downloading symfony/console (v6.3.4)
  - Downloading voku/portable-ascii (2.0.1)
  - Downloading phpoption/phpoption (1.9.1)
  - Downloading graham-campbell/result-type (v1.1.1)
  - Downloading vlucas/phpdotenv (v5.5.0)
  - Downloading symfony/css-selector (v6.3.2)
  - Downloading tijsverkoyen/css-to-inline-styles (2.2.6)
  - Downloading symfony/var-dumper (v6.3.5)
  - Downloading symfony/polyfill-uuid (v1.28.0)
  - Downloading symfony/uid (v6.3.0)
  - Downloading symfony/routing (v6.3.5)
  - Downloading symfony/process (v6.3.4)
  - Downloading symfony/polyfill-php72 (v1.28.0)
  - Downloading symfony/polyfill-intl-idn (v1.28.0)
  - Downloading symfony/mime (v6.3.5)
  - Downloading psr/event-dispatcher (1.0.0)
  - Downloading symfony/event-dispatcher-contracts (v3.3.0)
  - Downloading symfony/event-dispatcher (v6.3.2)
  - Downloading psr/log (3.0.0)
  - Downloading egulias/email-validator (4.0.2)
  - Downloading symfony/mailer (v6.3.5)
  - Downloading symfony/error-handler (v6.3.5)
  - Downloading symfony/http-kernel (v6.3.5)
  - Downloading symfony/finder (v6.3.5)
  - Downloading ramsey/collection (2.0.0)
  - Downloading brick/math (0.11.0)
  - Downloading ramsey/uuid (4.7.4)
  - Downloading psr/simple-cache (3.0.0)
  - Downloading nunomaduro/termwind (v1.15.1)
  - Downloading symfony/translation-contracts (v3.3.0)
  - Downloading symfony/translation (v6.3.3)
  - Downloading psr/clock (1.0.0)
  - Downloading nesbot/carbon (2.71.0)
  - Downloading monolog/monolog (3.4.0)
  - Downloading league/mime-type-detection (1.14.0)
  - Downloading league/flysystem (3.18.0)
  - Downloading league/flysystem-local (3.18.0)
  - Downloading nette/utils (v4.0.2)
  - Downloading nette/schema (v1.2.5)
  - Downloading dflydev/dot-access-data (v3.0.2)
  - Downloading league/config (v1.2.0)
  - Downloading league/commonmark (2.4.1)
  - Downloading laravel/serializable-closure (v1.3.1)
  - Downloading laravel/prompts (v0.1.11)
  - Downloading laravel/framework (v10.28.0)
  - Downloading symfony/yaml (v6.3.3)
  - Downloading laravel/sail (v1.25.0)
  - Downloading laravel/sanctum (v3.3.1)
  - Downloading nikic/php-parser (v4.17.1)
  - Downloading psy/psysh (v0.11.22)
  - Downloading laravel/tinker (v2.8.2)
  - Downloading hamcrest/hamcrest-php (v2.0.1)
  - Downloading mockery/mockery (1.6.6)
  - Downloading filp/whoops (2.15.3)
  - Downloading nunomaduro/collision (v7.10.0)
  - Downloading sebastian/version (4.0.1)
  - Downloading sebastian/type (4.0.0)
  - Downloading sebastian/recursion-context (5.0.0)
  - Downloading sebastian/object-reflector (3.0.0)
  - Downloading sebastian/object-enumerator (5.0.0)
  - Downloading sebastian/global-state (6.0.1)
  - Downloading sebastian/exporter (5.1.1)
  - Downloading sebastian/environment (6.0.1)
  - Downloading sebastian/diff (5.0.3)
  - Downloading sebastian/comparator (5.0.1)
  - Downloading sebastian/code-unit (2.0.0)
  - Downloading sebastian/cli-parser (2.0.0)
  - Downloading phpunit/php-timer (6.0.0)
  - Downloading phpunit/php-text-template (3.0.1)
  - Downloading phpunit/php-invoker (4.0.0)
  - Downloading phpunit/php-file-iterator (4.1.0)
  - Downloading theseer/tokenizer (1.2.1)
  - Downloading sebastian/lines-of-code (2.0.1)
  - Downloading sebastian/complexity (3.1.0)
  - Downloading sebastian/code-unit-reverse-lookup (3.0.0)
  - Downloading phpunit/php-code-coverage (10.1.7)
  - Downloading phar-io/version (3.2.1)
  - Downloading phar-io/manifest (2.0.3)
  - Downloading myclabs/deep-copy (1.11.1)
  - Downloading phpunit/phpunit (10.4.1)
  - Downloading spatie/backtrace (1.5.3)
  - Downloading spatie/flare-client-php (1.4.3)
  - Downloading spatie/ignition (1.11.3)
  - Downloading spatie/laravel-ignition (2.3.1)

データベース連携の準備

XAMPPにはMySQLが含まれています。Laravelの設定ファイル(.env)を見ると以下の設定があります。 ここでは、ローカル(作業端末上)のMySQLに接続する設定が書かれています。データベース名は「laravel」、ユーザー名は「root」、パスワードは「無し」です。ひとまずこの接続情報で接続できるデータベースをXAMPP上のMySQLに用意します。

.envのスクショ

Apache、mysqlの起動

XAMPPの画面を起動しApacheとMySQLを起動します。赤枠のボタンを押しましょう。

Apache、MySQLの起動ボタン

データベースの作成

赤枠のボタンを押してphpMyAdminを起動しましょう。phpMyAdminはMySQLだけでなくApacheも起動していないと表示できないので接続できないときはApacheが立ち上がっているかも確認しましょう。

phpMyAdminの起動ボタン

左のメニューにある新規作成ボタンを押して データベース「laravel」を作成します。

Apache、MySQLの起動ボタン

開発サーバーの立ち上げ

開発サーバーを立ち上げる方法はいくつかあります。代表的なのは以下の方法です。

  • PHPの組み込みサーバーを使う
  • Viteを使う
  • XAMPPを使う
  • Laravel Sail を利用し Docker Desktop を使う

この記事では、PHPの組み込みサーバーを使う方法とViteを使う方法を解説します。

PHPの組み込みサーバーを使う

この方法は簡単です。コマンドプロンプトで以下コマンドを実行するだけです。 8000番ポートでサーバーが立ち上がるので、http://127.0.0.1:8000 にアクセスしてみましょう。

C:\apps\pj1> npm install
C:\apps\pj1> php artisan serve

Viteを使う

Viteとは

.env の APP_URL を以下の様に修正しておきましょう。localhostの80番ポートはphpMyAdminで使用しているのでlaravelは8080ポートを使用するようにしておきます。

APP_URL=http://localhost:8080

作成したプロジェクトの中に vite.config.js というファイルがあります。ここにローカルサーバを立ち上げる設定を追加しましょう。

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';

export default defineConfig({
    server: {
        hmr: {
            host: 'localhost:8080',
        },
    },
    plugins: [
        laravel({
            input: ['resources/css/app.css', 'resources/js/app.js'],
            refresh: true,
        }),
    ],
});

コマンドプロンプトで以下を実行するとサーバーが立ち上がります。VSCodeなどで開発している方はエディタ内のターミナルから実行でもOKです。

C:\apps\pj1> npm install
C:\apps\pj1> npm run dev

こんなエラーが出る可能性があります。古いNodeJsを使ってる場合に出るエラーです。Nodeのバージョンを上げられないか検討しましょう。

C:\apps\pj1\node_modules\vite\bin\vite.js:2
import { performance } from 'node:perf_hooks

また、環境や利用しているバージョンによってはサーバーがうまく立ち上がらず、ブラウザでアクセスしても 「localhost で接続が拒否されました。ERR_CONNECTION_REFUSED」の様にエラーになることがあります。

その場合は、Node.jsやLaravelのバージョンを見直す、package-lock.jsonとnode_modulesフォルダを消して npm install からやり直すなどすると解消することがあるようです。解消しない場合は他の方法も検討してみましょう。

Laravelの環境構築は以上です。

PHP、Laravelを学ぶ際のおすすめ書籍

プロフェッショナルWebプログラミング Laravel
Docker Desktop + Laravel Sail を使った環境構築に始まり、Twitter風アプリを題材に基本的なアプリケーション構築の流れを学べます。メール送信やログイン、バッチ処理など実践的な内容もかかれてたので最初の一歩にはおすすめです。


独習PHP 第4版
PHP の基本から抑えたいときはこちら。解説が詳しい、練習問題で知識の定着も促せる。辞書のような一冊。手元にある安心感。とにかく分厚い。


Twitterもやってます。
Web開発やノーコード開発、趣味のお酒や家庭菜園についてつぶやいてます。

https://twitter.com/haradedede