diff --git "a/PHP \347\222\260\345\242\203\346\247\213\347\257\211\343\202\255\343\203\203\343\203\210/PHP8.0\343\201\256\347\222\260\345\242\203\346\247\213\347\257\211\357\274\210Windows10\357\274\211.md" "b/PHP \347\222\260\345\242\203\346\247\213\347\257\211\343\202\255\343\203\203\343\203\210/PHP8.0\343\201\256\347\222\260\345\242\203\346\247\213\347\257\211\357\274\210Windows10\357\274\211.md" new file mode 100644 index 00000000..45150e0e --- /dev/null +++ "b/PHP \347\222\260\345\242\203\346\247\213\347\257\211\343\202\255\343\203\203\343\203\210/PHP8.0\343\201\256\347\222\260\345\242\203\346\247\213\347\257\211\357\274\210Windows10\357\274\211.md" @@ -0,0 +1,576 @@ +> ここではWindows10におけるPHPの環境構築方法を記載しています。 +> +> 「asdf」というバージョン管理ツールを使用してインストールします。 +> +> WSL2とUbuntu20.04導入済みを前提としています。 +> +> バージョンは本キット作成時点で最新のバージョンである8.0.10をインストールします。 +> +> カリキュラム執筆時にバージョンが更新されている場合は置き換えてください。 +> +> ここから教材 + +# PHP8.0の環境構築(Windows10) +Webアプリケーションの開発を始めるにあたって、PHPのバージョン8.0とPHPのパッケージ管理ツールであるComposerをインストールしていきます。 + +Composerを使用することで、自作のWebアプリケーションに便利なツールや機能を簡単に組み込むことができます。 + +もし既にお手元のPCにPHP8.0の環境とComposerがインストールされていれば、このパートは読み飛ばしても大丈夫です。 + +::: warn +本パートは Windows10 での環境構築方法を記載しています。 +::: + +すでにPHP8.0がインストールされているかどうかはコマンドで確認できます。 + +Ubuntuのコンソール ウィンドウを開いて以下のコマンドを入力してみましょう。 + +```console +php -v +``` + +以下のようにインストールされているPHPのバージョンが8.0系であれば、PHPはインストール済みになります。 + +``` +PHP 8.0.10 (cli) (built: Sep 11 2021 19:09:08) ( NTS ) +Copyright (c) The PHP Group +Zend Engine v4.0.10, Copyright (c) Zend Technologies +``` + +Composerがインストールされているどうかは以下のコマンドで確認できます。 + +```console +composer --version +``` + +以下のようにバージョンが表示されていれば、Composerはインストール済みになります。 + +``` +Composer version 2.1.6 2021-08-19 17:11:08 +``` + +PHP8.0系とComposerがすでにインストールされている方は、本パートは読み飛ばしてください。 + +## バージョン管理ツール 「asdf」 のインストール +バージョン管理ツールは、言語のバージョンを簡単に切り替えることができるツールです。 + +使っている環境全体のバージョンだけでなく、プロジェクトごとにバージョンを設定することもできます。 + +PHPでは「phpenv」、Rubyでは「rbenv」など、それぞれの言語のバージョン管理ツールが用意されていますが、複数の管理ツールがあると、そのツール自体の管理にも手間がかかります。 + +そこで今回は、様々なプログラミング言語をまとめて管理できる**asdf**というツールをインストールします。 + +asdfはプログラミング言語だけでなく、MySQLやBundlerなどのツールのバージョンも管理することができます。 + +## curlとgitのインストール +asdfのインストールに必要なcurlとgitというパッケージをインストールします。 + +最初にすでにインストールされているか確認しましょう。 + +gitがインストール済みか確かめるため、以下のコマンドを実行してください。 + +```console +git --version +``` + +以下のようにバージョンの情報が表示されればインストール済みです。 + +``` +git version 2.25.1 +``` + +続いて、curlがインストール済みか確かめるため、以下のコマンドを実行してください。 + +```console +curl --version +``` + +以下のようにバージョンの情報が表示されればインストール済みです。 + +``` +curl 7.68.0 (x86_64-pc-linux-gnu) libcurl/7.68.0 OpenSSL/1.1.1f zlib/1.2.11 brotli/1.0.7 +・ +・ +・ +``` + +もしどちらか1つでもインストールされていない場合は、以下のコマンドを実行してください。 + +```console +sudo apt install -y curl git +``` + +コマンドを実行すると、以下のようにパスワードを聞かれる場合があります。 + +``` +[sudo] password for ユーザ名: +``` + +上記のメッセージが表示されたら、Ubuntuのユーザアカウントの作成時に登録したパスワードを入力してください。 + +パスワードを入力しエンターキーを押すと、インストールがはじまります。 + +以降も上記のようなメッセージが表示された場合は、同じようにパスワードを入力してください。 + +インストールがはじまると、数十行のメッセージが表示されます。 + +インストールが終わったら、再度以下のコマンドを順番に実行し、インストールされたか確認してください。 + +```console +git --version +curl --version +``` + +:::info +### aptコマンドの説明 +`apt`コマンドはLinuxにパッケージをインストール、アンインストール、アップデートなどを行なうためのコマンドです。 + +`apt install {パッケージ名1} {パッケージ名2} ・・・`とすることで、複数のパッケージを同時にインストールすることができます。 + +インストール時には通常、指定したパッケージのインストールを続行するかどうかを確認するメッセージが表示されますが、`-y`オプションを付加することで、確認をスキップしてインストールすることができます。 + +パッケージのインストールはすべての権限を持つユーザーアカウント(スーパーユーザ)でしか実施することができません。 + +`sudo`コマンドを実行したいコマンドの頭に付加することで、スーパーユーザとして実行することができます。::: + +## asdfをGithubからクローン +次にasdfをGithubからクローン(コピー)します。 + +以下のコマンドを実行してください。 + +```console +sudo git clone https://github.com/asdf-vm/asdf.git /usr/local/asdf +``` + +以下のようなメッセージが表示されたらクローンは完了です。 + +``` +Cloning into '/usr/local/asdf'... +remote: Enumerating objects: 6531, done. +remote: Counting objects: 100% (698/698), done. +remote: Compressing objects: 100% (459/459), done. +remote: Total 6531 (delta 336), reused 478 (delta 215), pack-reused 5833 +Receiving objects: 100% (6531/6531), 1.52 MiB | 1.46 MiB/s, done. +Resolving deltas: 100% (3683/3683), done. +Note: switching to 'a1ef92adb0cfd1e05b89feed93dd8b24c991134f'. +・ +・ +・ +``` + +:::info +### `git clone`コマンドの説明 +`git clone`コマンドはインターネット上などに存在するプロジェクト(リモートリポジトリ)をお使いのPCへコピーするコマンドです。 + +`git clone {プロジェクトのURL} {コピーする場所} --branch {ブランチ名}`とすることで、クローンすることができます。 + +gitについて詳しく学びたい方は、Techpitの以下の教材をおすすめします。 + +- [もう怖くないGit!チーム開発で必要なGitを完全マスター | Techpit](https://www.techpit.jp/courses/33)::: + +## asdfの操作権限の設定 +asdfをスーパーユーザでなくても実行できるように設定をします。 + +すべてのファイルやディレクトリは所有者や権限を設定することができ、誰でも勝手に内容を変更したり、削除することができないようになっています。 + +しかし、ユーザーひとりひとりのファイルごとの権限を設定するのは非常に手間なため、グループというユーザーの「まとめ」を作って、一括で管理できるようになっています。 + +ここではasdfを利用できるグループを作成し、asdfの操作権限を付与します。 + +その後、グループに実行ユーザを追加します。 + +まずはasdfを実行できるユーザのグループを作成します。 + +以下のコマンドを実行してください。 + +```console +sudo groupadd asdf +``` + +コマンドを実行しても特にメッセージは表示されません。 + +「asdf」という名前のグループを作成しました。 + +次にasdfが保存されているディレクトリ(`/usr/local/asdf`)を管理するグループとして、先ほど作成したasdfグループを設定します。 + +以下のコマンドを実行してください。 + +```console +sudo chgrp -R asdf /usr/local/asdf +``` + +コマンドを実行しても特にメッセージは表示されません。 + +次にディレクトリのアクセス権を変更します。 + +ファイルやディレクトリはユーザーやグループごとに読み込み権限、書き込み権限、実行権限などの権限を個別に付与できます。 + +今回はasdfグループに`/usr/local/asdf`ディレクトリのすべての権限を付与します。 + +以下のコマンドを実行してください。 + +```console +sudo chmod -R g+rwXs /usr/local/asdf +``` + +コマンドを実行しても特にメッセージは表示されません。 + +次にasdfグループにお使いのユーザアカウントを追加します。 + +以下のコマンドを実行してください。 + +```console +sudo gpasswd -a {ユーザ名} asdf +``` + +`[ユーザ名]`の箇所にはお使いのユーザアカウント名に置き換えて実行してください。 + +お使いのユーザアカウント名は以下のコマンドで確認できます。 + +```console +whoami +``` + +次にここまで行なった設定を反映します。 + +以下のコマンドを実行してください。 + +```console +exec bash -l +``` + +コマンドを実行しても特にメッセージは表示されません。 + +権限が正しく設定されているか確認してましょう。 + +以下のコマンドを実行してください。 + +```console +ls -l /usr/local +``` + +`ls -l`コマンドはファイルやディレクトリの詳細を、以下のような形式で一覧表示します。 + +``` +ファイルの種類とアクセス権 ハードリンク数 所有者 グループ ファイルサイズ タイムスタンプ(最終更新日) ファイル名 +``` + +以下のように、`asdf`ディレクトリのアクセス権が`drwxrwsr-x `と設定されていて、グループに`asdf`が設定されていれば成功です。 + + + +以上で、asdfの操作権限の設定は完了です。 + +## asdfにPATHを通す +`asdf`コマンドを利用するために、**PATHを通す**という作業をします。 + +「PATHを通す」とは、コマンドの実行ファイルの場所を指定することです。 + +PATHを通していない場合、`asdf`を実行するには`/usr/local/asdf/bin/asdf`とコマンドを記述する必要がありますが、PATHを通すことで単に`asdf`とコマンドを記述することで実行することができるようになります。 + +それではPATHを通します。 + +最初に必要な環境変数を記述する`/etc/profile.d/asdf.sh`ファイルを作成します。 + +以下のコマンドを実行してください。 + +```console +sudo vi /etc/profile.d/asdf.sh +``` + +以下のような画面が表示されます。 + + + +最初にキーボードの`i`キーを押してください。 + +以下のようにウインドウの下部に`INSERT`と表示されれば、書き込みの準備ができています。 + + + +以下のコードをコピー(Ctrl + c)し、ファイルに貼り付けて(Ctrl + v)ください。 + +```sh:/etc/profile.d/asdf.sh +export ASDF_DIR=/usr/local/asdf +export ASDF_DATA_DIR=$ASDF_DIR + +ASDF_BIN="${ASDF_DIR}/bin" +ASDF_USER_SHIMS="${ASDF_DATA_DIR}/shims" +PATH="${ASDF_BIN}:${ASDF_USER_SHIMS}:${PATH}" + +. "${ASDF_DIR}/lib/asdf.sh" +. "${ASDF_DIR}/completions/asdf.bash" +``` + +コードを貼り付けたらキーボードの`エスケープ(ESC)`キーを押してください。 + +ウインドウの下部に表示されていた`INSERT`が消えていることを確認してください。 + +次に`:wq`と入力し、エンターキーを押してください。 + +ファイルが保存されます。 + +最後に設定を反映します。 + +以下のコマンドを実行してください。 + +```console +source /etc/profile.d/asdf.sh +``` + +コマンドを実行しても特にメッセージは表示されません。 + +以上で`asdf`コマンドを使用するために必要なPATHが通りました。 + +## 動作確認 +`asdf`コマンドが使用できるようになったか動作確認しましょう。 + +以下のコマンドを実行してください。 + +```console +asdf --version +``` + +以下のように、バージョン情報が表示されれば完了です。 + +``` +v0.8.1-a1ef92a +``` + +## 必要なパッケージのインストール +PHP8.0のインストールに必要なパッケージを`apt`を利用してインストールします。 + +以下のコマンドを実行してください。 + +```console +sudo apt-get update && sudo apt-get install -y autoconf bison build-essential curl gettext git libgd-dev libcurl4-openssl-dev libedit-dev libicu-dev libjpeg-dev libmysqlclient-dev libonig-dev libpng-dev libpq-dev libreadline-dev libsqlite3-dev libssl-dev libxml2-dev libzip-dev openssl pkg-config re2c zlib1g-dev +``` + +インストールには数分かかることがあります。 + +続いて、PHPをインストールするのに必要なプラグインをインストールします。 + +以下のコマンドを実行してください。 + +```console +asdf plugin-add php https://github.com/asdf-community/asdf-php.git +``` + +上記のコマンドを実行して、「Permission denied ・・・」といったエラーが表示される場合は、Ubuntuの端末(ターミナル)を一度閉じ、開き直してから、もう一度コマンドを実行してください。 + +以下のコマンドを実行して、プラグインがインストールできたか確認しましょう。 + +```console +asdf plugin list +``` + +以下のように表示されれば成功です。 + +``` +php +``` + +::: info +**`apt`コマンドでインストールしたパッケージの確認方法** + +パッケージのインストールがうまくいっていないためにPHPが実行できない場合があります。 + +以下のコマンドを実行すると、インストール済みのパッケージが表示されます。 + +```console +sudo dpkg -l +``` + +コマンドを実行すると以下のようにパッケージが一覧で表示されます。 + +``` +Desired=Unknown/Install/Remove/Purge/Hold +| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend +|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) +||/ Name Version Architecture Description ++++-==============================-=================================-============-=====================================> +ii accountsservice 0.6.55-0ubuntu11 amd64 query and manipulate user account inf> +ii adduser 3.118ubuntu2 all add and remove users and groups +ii alsa-topology-conf 1.2.2-1 all ALSA topology configuration files +・ +・ +・ +``` + +環境構築がうまくいかない場合は、パッケージが不足していないか確認しましょう。 +::: + +## PHP8.0のインストール +今回は最新安定版のバージョンである8.0.10をインストールします。 + +以下のコマンドを実行してください。 + +```console +asdf install php 8.0.10 +``` + +インストールには数分かかることがあります。 + +インストールが完了したら、以下のコマンドを実行して、インストールされたか確認しましょう。 + +```console +asdf list php +``` + +以下のように表示されればインストール成功です。 + +``` +8.0.10 +``` + +## バージョンを設定する +先ほどインストールしたPHP8.0を使用する設定をします。 + +バージョンの設定は、OS全体(グローバル)で同じバージョンを設定する方法と、プロジェクトごと(ローカル)に異なるバージョンを設定する方法があります。 + +ここではグローバルに設定する方法を説明します。 + +以下のコマンドを実行してください。 + +```console +asdf global php 8.0.10 +``` + +コマンドを実行しても特にメッセージは表示されません。 + +バージョンが設定されたか確認しましょう。 + +以下のコマンドを実行してください。 + +```console +php -v +``` + +以下のようにバージョン情報が表示されれば成功です。 + +``` +PHP 8.0.10 (cli) (built: Sep 11 2021 19:09:08) ( NTS ) +Copyright (c) The PHP Group +Zend Engine v4.0.10, Copyright (c) Zend Technologies +``` + +もし表示されない場合は、ターミナルを再起動して、再度`php -v`コマンドを実行してください。 + +続いてComposerもインストールされているか確認しましょう。 + +以下のコマンドを実行してください。 + +```console +composer --version +``` + +以下のようにバージョン情報が表示されれば成功です。 + +```console +Composer version 2.1.6 2021-08-19 17:11:08 +``` + +以上でPHP8.0の環境構築は完了です。 + +## バージョンの変更方法 +最新となるバージョンは更新され続けるため、最新のバージョンを使用したい場合は、そのバージョンをインストールする必要があります。 + +また、プロジェクトによって使用するバージョンが異なることもよくあるため、ここではPHPのバージョンを変更する方法を説明します。 + +PHPの最新の情報は以下の公式ページを参照してください。 + +- [PHP: Downloads](https://www.php.net/downloads.php) + +### asdfのプラグインをアップデートする +まずはPHPをインストールするのに必要なプラグインのアップデートをします。 + +以下のコマンドを実行してください。 + +```console +asdf plugin update php +``` + +プラグインをアップデートすることで最新のPHPが利用できるようになります。 + +### 指定のバージョンをインストールする +まずはインストールしたいバージョンが利用できるか確認します。 + +以下のコマンドを実行してください。 + +```console +asdf list all php +``` + +以下のようにインストール可能なバージョンが表示されます。 + +```console +・ +・ +・ +8.0.10 +8.1.0alpha1 +8.1.0alpha2 +8.1.0alpha3 +8.1.0beta1 +8.1.0beta2 +8.1.0beta3 +``` + +`alpha`や`beta`が付いているバージョンは正式リリースされていないため、単にバージョン数が表示されているものをインストールしましょう。 + +バージョンを確認したら、以下のコマンドを実行してください。 + +```console +asdf install php {バージョン} +``` + +`{バージョン}`の箇所には`8.0.10`のように、インストールしたいバージョンを入力してください。 + +コマンドを実行し、インストールが終わったら、以下のコマンドを実行してインストールできているか確認しましょう。 + +```console +asdf list php +``` + +以下のようにインストールしたバージョンが表示されていれば成功です。 + +``` +8.0.10 +``` + +### バージョンを設定する +インストールが完了したら、バージョンを使用する設定をしましょう。 + +グローバルに設定する場合は、以下のコマンドを実行してください。 + +```console +asdf global php <バージョン> +``` + +ローカルに設定する場合は、設定したいプロジェクトのルートディレクトリに移動し、以下のコマンドを実行してください。 + +```console +asdf local php <バージョン> +``` + +コマンドを実行しても特にメッセージは表示されません。 + +バージョンが設定されたか確認しましょう。 + +以下のコマンドを実行してください。 + +```console +php -v +``` + +以下のように設定したバージョン情報が表示されれば成功です。 + +``` +PHP 8.0.10 (cli) (built: Sep 11 2021 19:09:08) ( NTS ) +Copyright (c) The PHP Group +Zend Engine v4.0.10, Copyright (c) Zend Technologies +``` + +以上でPHPのバージョン変更は完了です。 + +お疲れ様でした。