はじめての Windows + Laravel 環境構築
PHP の知識も Laravel の知識もゼロの状態から、環境構築、プロジェクトを作成してサーバーを起動するところまでやってみる。
前提条件
- Windows 10 Pro 20H2
- Scoop 導入済み
- コマンドは、すべて PowerShell Core 7 で実行。(コマンドプロンプトでも問題ないはず。)
公式ドキュメント を参考に、composer を利用したインストールをする。
composer は、依存関係の管理をしてくれるツールのようで、Java の Gradle、Node の npm といったツールだと思っている。
まず、Scoop を使い php, composer をインストールする。
> scoop install php composer
とくに問題なくインストールできた。
次に、composer を使い Laravel プロジェクトを作成する。
> composer create-project laravel/laravel sample-app
真っ赤なエラー画面が表示される。
[Composer\Exception\NoSslException]
The openssl extension is required for SSL/TLS protection but is not available.
If you can not enable the openssl extension, you can disable this error, at your own risk,
by setting the 'disable-tls' option to true.
調べてみると、php.ini
ファイルを作成し、OpenSSL の拡張を有効化しなければいけないらしい。
次の手順で、php.ini ファイルの作成と、OpenSSL 拡張を有効化する。
- PHP インストールフォルダー (
%USERPROFILE%\scoop\apps\php\current\
) にあるphp.ini-development
ファイルをコピーし、php.ini
ファイルを作成する。 -
php.ini
ファイルをエディターで開き、次の 2 つの文字列を検索し、コメントアウトを外す。extension_dir = "ext"
extension=openssl
上記対応後、再度 composer コマンドによるプロジェクト作成を実行。
> composer create-project laravel/laravel sample-app
進んだように見えたがエラー。
(一部抜粋)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- laravel/framework[v8.40.0, ..., 8.x-dev] require ext-mbstring * -> it is missing from
your system. Install or enable PHP's mbstring extension.
- Root composer.json requires laravel/framework ^8.40 -> satisfiable by
laravel/framework[v8.40.0, ..., 8.x-dev].
どうやら mbstring
という拡張も必要なようだ。
再度 php.ini
ファイルをエディターで開き、拡張の箇所 extension=mbstring
のコメントアウトを外す。
再挑戦したが、同じように拡張が不足しているエラーが発生。
一回で全部出してくれ・・・。
最終的に、次の拡張に対してコメントアウトを外した。(これまでに作業したものも含んでいる。)
extension=fileinfo
extension=mbstring
extension=openssl
最後に Application key set successfully.
と表示され、エラーが発生しなかったので大丈夫そう。
プロジェクトディレクトリーに移動後、次のコマンドを実行し、開発用サーバーを起動する。
> php artisan serve
Starting Laravel development server: http://127.0.0.1:8000
[Sun Jun 13 11:13:37 2021] PHP 8.0.7 Development Server (http://127.0.0.1:8000) started
ブラウザーを起動し、上記サーバーにアクセスすると、Laravel の文字が表示されたので、大丈夫そう。