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バージョンをダウンロードし、任意のフォルダで展開する。
    f:id:pachiquli:20190512232129p:plain
    PHPのZipダウンロード
     

Composerのインストール

Laravelフレームワークをインストールするには、Composer(PHPのライブラリを管理するツール)を利用しなければならない。

Composerは公式ページからダウンロードページにアクセスし、Windows用のインストーラーをダウンロードして実行するだけ。

f:id:pachiquli:20190512232548p:plain
Composerトップページ

 

f:id:pachiquli:20190512232650p:plain
Composerのインストーラーをダウンロード

 

以下のコマンドを実行し、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アニメーションを作成してみた。詳細については別の記事でまとめている。

pachiquli.hatenablog.com

 

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の画面が表示されればローカル開発サーバはうまく起動できている。

f:id:pachiquli:20190513005522p:plain
ローカル開発サーバのトップページ

 

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";
});

 

実行結果は以下の通り、シンプルだがうまくいった。

f:id:pachiquli:20190513013711p:plain
Hello, world

 

おわりに

LaravelやPHPの公式ページは日本語による説明が充実していおり、内容もわかりやすく記載されているおかげで苦労することなく環境構築ができた。

ひとまず、Laravelのスタート地点にたったので今後はPHP、Laravelに関していろいろと学んだことをアウトプットしていけるよう、日々頑張っていこうと思う。