サイトを更新しています。 数日間、レイアウトや翻訳に不具合が出ることがあります。ドキュメントは引き続きご利用いただけます。表示が崩れている場合は、後ほど再読み込みしてください。

ホーム Laravel 10.x Laravel Valet

Laravel Valet

10.x 2026年3月7日

#はじめに

Примечание

macOSでLaravelアプリケーションをさらに簡単に開発したいですか?Laravel Herdをチェックしてください。HerdにはValet、PHP、Composerを含むLaravel開発に必要なすべてが揃っています。

Laravel ValetはmacOSのミニマリスト向け開発環境です。ValetはMacの起動時に常にNginxをバックグラウンドで実行するよう設定します。そして、DnsMasqを使って、*.testドメインへのすべてのリクエストをローカルマシンにインストールされたサイトにプロキシします。

つまり、Valetは約7MBのRAMしか使わない超高速なLaravel開発環境です。ValetはSailHomesteadの完全な代替ではありませんが、柔軟な基本機能を求める場合や、極めて高速な環境が必要な場合、またはRAMが限られたマシンで作業する場合に優れた選択肢となります。

Valetが標準でサポートするものは以下に限りませんが、主に以下の通りです:

<style> #valet-support > ul { column-count: 3; -moz-column-count: 3; -webkit-column-count: 3; line-height: 1.9; } </style>

ただし、独自のカスタムドライバーでValetを拡張することもできます。

#インストール

Внимание

ValetはmacOSとHomebrewが必要です。インストール前に、ApacheやNginxなど他のプログラムがローカルマシンのポート80を使用していないことを確認してください。

始めるには、まずHomebrewが最新であることをupdateコマンドで確認してください:

brew update

次に、Homebrewを使ってPHPをインストールします:

brew install php

PHPをインストールしたら、Composerパッケージマネージャーをインストールする準備が整います。さらに、$HOME/.composer/vendor/binディレクトリがシステムの「PATH」に含まれていることを確認してください。Composerをインストールした後、Laravel ValetをグローバルComposerパッケージとしてインストールできます:

composer global require laravel/valet

最後に、Valetのinstallコマンドを実行します。これによりValetとDnsMasqが設定・インストールされ、Valetが依存するデーモンがシステム起動時に自動起動するよう設定されます:

valet install

Valetをインストールしたら、ターミナルでping foobar.testのように任意の*.testドメインにpingを試みてください。Valetが正しくインストールされていれば、127.0.0.1で応答が返ってきます。

Valetはマシンの起動時に必要なサービスを自動的に開始します。

#PHPバージョン

Примечание

グローバルなPHPバージョンを変更する代わりに、isolate コマンドを使ってサイトごとのPHPバージョンを指定できます。

Valetはvalet use php@versionコマンドでPHPバージョンを切り替えられます。指定したPHPバージョンがインストールされていない場合は、Homebrewを使って自動的にインストールします:

valet use [email protected]

valet use php

プロジェクトのルートに.valetrcファイルを作成することもできます。.valetrcファイルには、そのサイトが使用するPHPのバージョンを記述してください:

[email protected]

このファイルを作成したら、valet useコマンドを実行するだけで、ファイルを読み取ってサイトのPHPバージョンを自動的に判別します。

Внимание

Valetは複数のPHPバージョンがインストールされていても、一度に1つのPHPバージョンしか提供しません。

#データベース

アプリケーションにデータベースが必要な場合は、MySQL、PostgreSQL、Redisを含む無料のオールインワンデータベース管理ツールDBnginを試してください。DBnginをインストールした後は、127.0.0.1rootユーザー名と空のパスワードでデータベースに接続できます。

#インストールのリセット

Valetのインストールに問題がある場合は、composer global require laravel/valetを実行してからvalet installを実行するとインストールをリセットでき、多くの問題が解決します。まれにvalet uninstall --forceを実行してからvalet installで「ハードリセット」が必要になることもあります。

#Valetのアップグレード

Valetをアップデートするには、ターミナルでcomposer global require laravel/valetを実行します。アップグレード後は、設定ファイルの追加アップグレードが必要な場合に備えてvalet installを実行することを推奨します。

#Valet 4へのアップグレード

Valet 3からValet 4にアップグレードする場合は、以下の手順で正しくアップグレードしてください:

  • サイトの PHP バージョンをカスタマイズするために .valetphprc ファイルを追加している場合は、各 .valetphprc ファイルの名前を .valetrc に変更してください。次に、既存の .valetrc ファイルの内容の先頭に php= を付けてください。
  • カスタムドライバは、新しいドライバシステムの名前空間、拡張、型ヒント、および戻り値の型ヒントに合わせて更新してください。例として Valet の SampleValetDriver を参照できます。
  • サイトの公開に PHP 7.1 - 7.4 を使用している場合でも、Homebrew で PHP 8.0 以上をインストールしておいてください。Valet は主要にリンクされたバージョンでなくても、このバージョンを使って一部のスクリプトを実行します。

#サイトの提供

Valetをインストールしたら、Laravelアプリケーションの提供を開始できます。Valetはアプリケーション提供を支援するためにparklinkの2つのコマンドを提供します。

#park コマンド

parkコマンドは、マシン上のアプリケーションが入ったディレクトリを登録します。一度ディレクトリをValetに「park」すると、そのディレクトリ内のすべてのディレクトリがhttp://<directory-name>.testでブラウザからアクセス可能になります:

cd ~/Sites

valet park

これだけです。これで「park」したディレクトリ内に作成したアプリケーションはすべてhttp://<directory-name>.testの形式で自動的に提供されます。例えば、parkしたディレクトリに「laravel」というディレクトリがあれば、その中のアプリケーションはhttp://laravel.testでアクセスできます。さらに、Valetはワイルドカードサブドメイン(http://foo.laravel.test)も自動的に許可します。

linkコマンドもLaravelアプリケーションの提供に使えます。このコマンドは、ディレクトリ全体ではなく単一のサイトを提供したい場合に便利です:

cd ~/Sites/laravel

valet link

linkコマンドでアプリケーションをValetにリンクすると、そのディレクトリ名でアクセスできます。上記の例でリンクしたサイトはhttp://laravel.testでアクセス可能です。さらに、Valetはワイルドカードサブドメイン(http://foo.laravel.test)も自動的に許可します。

異なるホスト名でアプリケーションを提供したい場合は、linkコマンドにホスト名を渡せます。例えば、以下のコマンドでhttp://application.testでアプリケーションを利用可能にできます:

cd ~/Sites/laravel

valet link application

もちろん、linkコマンドを使ってサブドメインでアプリケーションを提供することも可能です:

valet link api.application

linksコマンドを実行すると、リンク済みのディレクトリ一覧が表示されます:

valet links

unlinkコマンドはサイトのシンボリックリンクを削除するために使います:

cd ~/Sites/laravel

valet unlink

#TLSでサイトを保護する

デフォルトではValetはHTTPでサイトを提供しますが、HTTP/2を使った暗号化されたTLSでサイトを提供したい場合はsecureコマンドを使います。例えば、Valetがlaravel.testドメインでサイトを提供している場合、以下のコマンドでサイトを保護できます:

valet secure laravel

サイトのセキュリティを解除してトラフィックの配信をプレーンなHTTPに戻すには、unsecure コマンドを使用します。secure コマンドと同様に、このコマンドは解除したいホスト名を受け取ります:

valet unsecure laravel

#デフォルトサイトの提供

未知のtestドメインにアクセスした際に404ではなく「デフォルト」サイトを提供したい場合は、~/.config/valet/config.jsonの設定ファイルにdefaultオプションを追加し、デフォルトサイトのパスを指定します:

"default": "/Users/Sally/Sites/example-site",

#サイトごとのPHPバージョン

デフォルトではValetはグローバルなPHPインストールを使ってサイトを提供しますが、複数のPHPバージョンをサイトごとに使い分けたい場合はisolateコマンドを使って特定のサイトで使うPHPバージョンを指定できます。isolateコマンドは現在の作業ディレクトリにあるサイトに対して指定したPHPバージョンを設定します:

cd ~/Sites/example-site

valet isolate [email protected]

サイト名がディレクトリ名と異なる場合は、--siteオプションでサイト名を指定できます:

valet isolate [email protected] --site="site-name"

利便性のために、valet phpcomposerwhich-phpコマンドを使って、サイトの設定されたPHPバージョンに応じたPHP CLIやツールへの呼び出しをプロキシできます:

valet php
valet composer
valet which-php

isolatedコマンドを実行すると、分離されたすべてのサイトとそのPHPバージョンの一覧が表示されます:

valet isolated

サイトをValetのグローバルPHPバージョンに戻したい場合は、サイトのルートディレクトリでunisolateコマンドを実行します:

valet unisolate

#サイトの共有

Valetにはローカルサイトを外部に共有するコマンドがあり、モバイルデバイスでのテストやチームメンバー・クライアントとの共有が簡単にできます。

標準でValetはngrokまたはExposeを使ったサイト共有をサポートします。サイトを共有する前に、share-toolコマンドでngrokexposeを指定してValetの設定を更新してください:

valet share-tool ngrok

ツールを選択してHomebrew(ngrok)やComposer(Expose)でインストールされていない場合、Valetが自動的にインストールを促します。もちろん、両ツールとも共有を開始する前にngrokまたはExposeのアカウント認証が必要です。

サイトを共有するには、ターミナルでサイトのディレクトリに移動し、Valetのshareコマンドを実行します。公開可能なURLがクリップボードにコピーされ、ブラウザに貼り付けたりチームと共有したりできます:

cd ~/Sites/laravel

valet share

共有を停止するには、Control + Cを押してください。

Внимание

カスタムDNSサーバー(例:1.1.1.1)を使っている場合、ngrok共有が正しく動作しないことがあります。その場合はMacのシステム設定を開き、ネットワーク設定の詳細設定のDNSタブで127.0.0.1を最初のDNSサーバーとして追加してください。

#Ngrokを使ったサイト共有

ngrok を使ってサイトを共有するには、ngrok アカウントを作成し、認証トークンを設定する必要があります。認証トークンを取得したら、そのトークンを使って Valet の設定を更新できます。

valet set-ngrok-token YOUR_TOKEN_HERE
Примечание

valet share --region=eu のように、share コマンドに追加の ngrok パラメータを渡すことができます。詳細は ngrok ドキュメントをご覧ください。

#Expose を使ったサイト共有

Expose を使ってサイトを共有するには、Expose アカウントを作成し、認証トークンで認証する必要があります。

追加のコマンドラインパラメータについては、Expose ドキュメントをご参照ください。

#ローカルネットワークでのサイト共有

Valet はデフォルトで内部の 127.0.0.1 インターフェイスへの着信トラフィックのみを許可しており、開発マシンがインターネットからのセキュリティリスクにさらされないようにしています。

ローカルネットワーク上の他のデバイスからマシンの IP アドレス(例:192.168.1.10/application.test)を使って Valet サイトにアクセスさせたい場合は、そのサイトの適切な Nginx 設定ファイルを手動で編集し、listen ディレクティブの制限を解除する必要があります。具体的には、ポート 80 と 443 の listen ディレクティブから 127.0.0.1: のプレフィックスを削除してください。

プロジェクトで valet secure を実行していない場合は、すべての非 HTTPS サイトのネットワークアクセスを /usr/local/etc/nginx/valet/valet.conf ファイルを編集して開放できます。ただし、HTTPS でサイトを提供している場合(valet secure を実行済みの場合)は、~/.config/valet/Nginx/app-name.test ファイルを編集してください。

Nginx 設定を更新したら、valet restart コマンドを実行して設定変更を反映させてください。

#サイト固有の環境変数

他のフレームワークを使うアプリケーションの中には、サーバーの環境変数に依存しているものの、プロジェクト内でそれらの変数を設定する方法を提供していない場合があります。Valet では、プロジェクトのルートに .valet-env.php ファイルを追加することで、サイト固有の環境変数を設定できます。このファイルは、サイトごとの環境変数のペアを配列で返し、指定された各サイトのグローバルな $_SERVER 配列に追加されます。

<?php

return [
    // laravel.test サイトの $_SERVER['key'] に "value" を設定...
    'laravel' => [
        'key' => 'value',
    ],

    // すべてのサイトの $_SERVER['key'] に "value" を設定...
    '*' => [
        'key' => 'value',
    ],
];

#サービスのプロキシ

Valet ドメインをローカルマシン上の別のサービスにプロキシしたい場合があります。例えば、Valet を使いながら別のサイトを Docker で動かす必要がある場合、Valet と Docker は同時にポート 80 をバインドできません。

この問題を解決するために、proxy コマンドでプロキシを作成できます。例えば、http://elasticsearch.test へのすべてのトラフィックを http://127.0.0.1:9200 にプロキシできます。

# HTTP 経由でプロキシ...
valet proxy elasticsearch http://127.0.0.1:9200

# TLS + HTTP/2 経由でプロキシ...
valet proxy elasticsearch http://127.0.0.1:9200 --secure

unproxy コマンドでプロキシを削除できます。

valet unproxy elasticsearch

proxies コマンドでプロキシ設定されているすべてのサイトを一覧表示できます。

valet proxies

#カスタム Valet ドライバー

Valet がネイティブにサポートしていないフレームワークや CMS で動作する PHP アプリケーションを提供するために、独自の Valet ドライバーを作成できます。Valet をインストールすると、~/.config/valet/Drivers ディレクトリが作成され、その中に SampleValetDriver.php ファイルが含まれています。このファイルはカスタムドライバーの書き方を示すサンプル実装です。ドライバー作成には servesisStaticFilefrontControllerPath の3つのメソッドを実装するだけで十分です。

3つのメソッドすべてに $sitePath$siteName$uri の引数が渡されます。$sitePath はマシン上で提供するサイトの完全なパス(例:/Users/Lisa/Sites/my-project)、$siteName はドメインの「ホスト」または「サイト名」部分(例:my-project)、$uri はリクエストされた URI(例:/foo/bar)です。

カスタム Valet ドライバーを完成させたら、~/.config/valet/Drivers ディレクトリに FrameworkValetDriver.php という命名規則で配置してください。例えば、WordPress 用のカスタムドライバーならファイル名は WordPressValetDriver.php です。

カスタム Valet ドライバーで実装すべき各メソッドのサンプル実装を見てみましょう。

#serves メソッド

serves メソッドは、ドライバーがリクエストを処理すべき場合に true を返し、それ以外は false を返します。このメソッド内で、与えられた $sitePath に対象のプロジェクトが存在するかどうかを判定します。

例えば、WordPressValetDriver を作成するとしたら、serves メソッドは次のようになるかもしれません。

/**
 * ドライバーがリクエストを処理するか判定します。
 */
public function serves(string $sitePath, string $siteName, string $uri): bool
{
    return is_dir($sitePath.'/wp-admin');
}

#isStaticFile メソッド

isStaticFile メソッドは、リクエストが画像やスタイルシートなどの「静的」ファイルを要求しているか判定します。静的ファイルの場合は、そのファイルの完全なパスを返し、そうでなければ false を返します。

/**
 * リクエストが静的ファイルか判定します。
 *
 * @return string|false
 */
public function isStaticFile(string $sitePath, string $siteName, string $uri)
{
    if (file_exists($staticFilePath = $sitePath.'/public/'.$uri)) {
        return $staticFilePath;
    }

    return false;
}
Внимание

isStaticFile メソッドは、serves メソッドがリクエストに対して true を返し、かつリクエスト URI が / でない場合にのみ呼び出されます。

#frontControllerPath メソッド

frontControllerPath メソッドは、アプリケーションの「フロントコントローラー」への完全修飾パス(通常は "index.php" ファイルまたは同等のファイル)を返す必要があります:

/**
 * アプリケーションのフロントコントローラーの完全なパスを取得します。
 */
public function frontControllerPath(string $sitePath, string $siteName, string $uri): string
{
    return $sitePath.'/public/index.php';
}

#ローカルドライバー

単一のアプリケーション用にカスタム Valet ドライバーを定義したい場合は、アプリケーションのルートディレクトリに LocalValetDriver.php ファイルを作成してください。カスタムドライバーは基本の ValetDriver クラスを継承するか、LaravelValetDriver のような既存のアプリケーション固有ドライバーを継承できます。

use Valet\Drivers\LaravelValetDriver;

class LocalValetDriver extends LaravelValetDriver
{
    /**
     * ドライバーがリクエストを処理するか判定します。
     */
    public function serves(string $sitePath, string $siteName, string $uri): bool
    {
        return true;
    }

    /**
     * アプリケーションのフロントコントローラーの完全なパスを取得します。
     */
    public function frontControllerPath(string $sitePath, string $siteName, string $uri): string
    {
        return $sitePath.'/public_html/index.php';
    }
}

#その他の Valet コマンド

Command 説明
valet list すべての Valet コマンドの一覧を表示します。
valet diagnose Valet のデバッグに役立つ診断情報を出力します。
valet directory-listing ディレクトリリスティングの動作を設定します。デフォルトは「off」で、ディレクトリに対して 404 ページを表示します。
valet forget 「parked」ディレクトリから実行して、そのディレクトリを parked ディレクトリリストから削除します。
valet log Valet のサービスが書き込むログの一覧を表示します。
valet paths すべての「parked」パスを表示します。
valet restart Valet のデーモンを再起動します。
valet start Valet のデーモンを起動します。
valet stop Valet のデーモンを停止します。
valet trust Brew と Valet の sudoers ファイルを追加し、パスワード入力なしで Valet コマンドを実行できるようにします。
valet uninstall Valet をアンインストールします。手動アンインストールの手順を表示します。--force オプションを付けると、Valet のリソースを強制的にすべて削除します。

#Valet のディレクトリとファイル

Valet 環境のトラブルシューティング時に、以下のディレクトリやファイル情報が役立ちます。

#~/.config/valet

Valet のすべての設定が含まれています。このディレクトリのバックアップを取ることをおすすめします。

#~/.config/valet/dnsmasq.d/

DNSMasq の設定が含まれるディレクトリです。

#~/.config/valet/Drivers/

Valet のドライバーが含まれるディレクトリです。ドライバーは特定のフレームワークや CMS の提供方法を決定します。

#~/.config/valet/Nginx/

Valet のすべての Nginx サイト設定が含まれています。installsecure コマンド実行時にこれらのファイルは再生成されます。

#~/.config/valet/Sites/

リンクされたプロジェクトのシンボリックリンクがすべて含まれるディレクトリです。

#~/.config/valet/config.json

Valet のマスター設定ファイルです。

#~/.config/valet/valet.sock

Valet の Nginx インストールで使用される PHP-FPM ソケットファイルです。PHP が正常に動作している場合にのみ存在します。

#~/.config/valet/Log/fpm-php.www.log

PHP エラーのユーザーログファイルです。

#~/.config/valet/Log/nginx-error.log

Nginx エラーのユーザーログファイルです。

#/usr/local/var/log/php-fpm.log

PHP-FPM エラーのシステムログファイルです。

#/usr/local/var/log/nginx

Nginx のアクセスログとエラーログが含まれるディレクトリです。

#/usr/local/etc/php/X.X/conf.d

PHP の各種設定用の *.ini ファイルが含まれるディレクトリです。

#/usr/local/etc/php/X.X/php-fpm.d/valet-fpm.conf

PHP-FPM プールの設定ファイルです。

#~/.composer/vendor/laravel/valet/cli/stubs/secure.valet.conf

サイトの SSL 証明書を作成するために使われるデフォルトの Nginx 設定ファイルです。

#ディスクアクセス

macOS 10.14 以降、一部のファイルやディレクトリへのアクセスがデフォルトで制限されています。これにはデスクトップ、ドキュメント、ダウンロードの各ディレクトリが含まれます。さらに、ネットワークボリュームやリムーバブルボリュームへのアクセスも制限されています。そのため、Valet ではサイトフォルダをこれらの保護された場所の外に置くことを推奨しています。

ただし、それらの場所のいずれかからサイトを配信する場合は、Nginx に「フルディスクアクセス」を付与する必要があります。そうしないと、特に静的アセットを配信する際に、サーバーエラーや Nginx の予期しない動作が発生することがあります。通常、macOS はこれらの場所へのアクセスを Nginx に許可するよう自動的にプロンプトを表示します。あるいは、System Preferences > Security & Privacy > Privacy から手動で Full Disk Access を選択して設定できます。次に、メインウィンドウのペインで nginx エントリを有効にしてください。