PHPをはじめる ~PHPの実行環境構築からHello, worldまで(Laravelフレームワーク)~
はじめに
仕事でPHPとLaravelフレームワークを使用した開発をすることになった。
PHPもLaravelも詳しくないので、これを良い機会にたくさん記事を書いていきたいと思う。
まずは基本的なことからということで、環境構築からHello, worldまでを整理していく。
目次
環境構築
前提
- 本記事は2019/05/12時点で実施した内容。
- OS : Windows10(64ビット)
- PHP : 7.3.5
- Composer : 1.8.5
- Laravel : 5.8.16
※後述する各コマンドの実行はPowerShellで実行したが、Git Bashでも同様のコマンドで実行できると思う。
PHPのインストール
インストールといってもPHPの公式ページからZipファイルをダウンロードして任意のフォルダに展開するだけ。
PHPはサーバーサイドの言語なので、実際に動作確認するにはサーバーを構築する必要がある。 ※Laravelフレームワークに含まれる機能でローカルマシンをサーバーとして動かすことができる。
- PHPのダウンロードページはこちら。
- 最新版は7.3.5で、さらに新しい7.4はまだリリースはされていないようだ。
- 64ビット用のThread Safeバージョンをダウンロードし、任意のフォルダで展開する。
Composerのインストール
Laravelフレームワークをインストールするには、Composer(PHPのライブラリを管理するツール)を利用しなければならない。
Composerは公式ページからダウンロードページにアクセスし、Windows用のインストーラーをダウンロードして実行するだけ。
以下のコマンドを実行し、Composerのバージョン情報が表示されればインストールはうまくいっている。
composer -V Composer version 1.8.5 2019-04-09 17:46:47
注意点としてComposerをインストールするには先にPHPのインストールが必須(php.exeの格納場所が聞かれる)である。
気が利くことに、PHPの環境変数設定をしていなくても、ComposerインストールのタイミングでPHPの環境変数設定が自動で行われた。
PHPのバージョン情報をついでに確認。
php -v PHP 7.3.5 (cli) (built: May 1 2019 13:17:17) ( ZTS MSVC15 (Visual C++ 2017) x64 ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.5, Copyright (c) 1998-2018 Zend Technologies
話がそれるが公式ページの指揮者のアイコンはアクセスする度に色が変わる。
遊び心にキュンときたので、なんとなくGifアニメーションを作成してみた。詳細については別の記事でまとめている。
Laravelのインストール
Laravelの公式ページに記載されている通り、Composerを利用してLaravelをインストールする。
composer global require laravel/installer
以下のコマンドを実行し、Laravelの“インストーラー”のバージョン情報が表示されればインストールはうまくいっている。
laravel -V Laravel Installer 2.1.0
Laravelプロジェクトの作成
PHPを動作させるために、今回はLaravelフレームワークを使用する。 (Laravelプロジェクトを作成し、その中でPHPのソースコードを動作させる。)
LaravelフレームワークはPHPでWebアプリケーションを作るためのフレームワークである。
数あるPHPのフレームワークの中でも近年人気の高いフレームワークの1つらしい。
公式ドキュメントにある通り、任意のフォルダで以下のコマンドを実行し、Laravelプロジェクトを作成する。
コマンド:composer create-project --prefer-dist laravel/laravel プロジェクト名
今回はプロジェクト名を「HelloWorld」としたのでコマンドを実行した任意のフォルダの直下に「HelloWorld」というフォルダが作成された。
composer create-project --prefer-dist laravel/laravel HelloWorld
Laravelのバージョンは以下のコマンドで確認できる。 ※作成したLaravelプロジェクトフォルダの直下(artisanファイルがある場所)で実行する。
php artisan -V Laravel Framework 5.8.16
ちなみにLaravelプロジェクトの作成は以下のコマンドでも作成できる。
コマンド:laravel new プロジェクト名
このコマンドを使う場合、php.ini(PHPのZipファイルを展開した時の直下に存在する)の内容によってはエラーが発生し、プロジェクトの作成に失敗する。
自分が試した時は以下のようなエラー(抜粋)が発生した。
Your requirements could not be resolved to an installable set of packages. Problem 1 - Installation request for league/flysystem 1.0.51 -> satisfiable by league/flysystem[1.0.51]. - league/flysystem 1.0.51 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system. Problem 2 - league/flysystem 1.0.51 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system. - laravel/framework v5.8.16 requires league/flysystem ^1.0.8 -> satisfiable by league/flysystem[1.0.51]. - Installation request for laravel/framework v5.8.16 -> satisfiable by laravel/framework[v5.8.16].
エラーメッセージの内容をよく読めばわかるのだが、php.iniのextensionにfileinfoがないと言われてしまった。
実際にphp.iniを見てみると以下のようコメントアウト状態になっていた。
;extension=fileinfo
以下のようにコメントアウトを削除することで、laravel new プロジェクト名
コマンドでもLaravelプロジェクトが作成できることを確認した。
extension=fileinfo
Laravelによるローカル開発サーバ起動
作成したLaravelプロジェクトの直下(artisanファイルがある場所)で、以下のコマンドを実行する。
php artisan serve
WebブラウザでURL(http://localhost:8000)にアクセスし、Laravelの画面が表示されればローカル開発サーバはうまく起動できている。
Hello, worldの表示
最後にプログラムの入門でおきまりのHello, worldの文言を表示する。
作成済みのLaravelプロジェクトは以下のフォルダ構成となっている。 ※今回の説明に必要なファイルだけ表示している。
HelloWorld ├ app/ ├ bootstrap/ ├ config/ ├ database/ ├ public/ ├ resources/ │ └ views │ └ welcome.blade.php ├ routes/ │ └ web.php ├ storage/ ├ tests/ └ vendor/
ローカル開発サーバのトップページに表示されているファイルはwelcome.blade.php
である。
URL(http://localhost:8000)にアクセスした時に、Laravelはwelcome.blade.php
を表示するように制御している。
この制御を行っているのがweb.php
である。
「Hello, world」を表示するにはこのweb.php
を修正すればよい。
return view('welcome');
の箇所は「viewのwelcomeというファイルを表示しなさい」という意味になる。
routes/web.php(修正前)
<?php Route::get('/', function () { return view('welcome'); });
return "Hello, world";
として単に「『Hello, world』という文字列を返す」ようにする。
routes/web.php(修正後)
<?php Route::get('/', function () { return "Hello, world"; });
実行結果は以下の通り、シンプルだがうまくいった。
おわりに
LaravelやPHPの公式ページは日本語による説明が充実していおり、内容もわかりやすく記載されているおかげで苦労することなく環境構築ができた。
ひとまず、Laravelのスタート地点にたったので今後はPHP、Laravelに関していろいろと学んだことをアウトプットしていけるよう、日々頑張っていこうと思う。