PHP Laravel5.8をインストールする

概要

PHPでいちばん有名なフレームワークのLaravelをインストールして、作業効率とセキュリティを大幅にアップしましょう。

PHP単体のプログラムだと、主に3つの役割があります。
・データベースとやりとりするモデル部分(Model)
・画面に描画される表示部分(View)
・データの整形や処理を行う部分 (Controller)

この3つをベースに考えて作られているフレームワークをMVCモデルといいます。
LaravelはこのMVCモデルを採用しており、
HTMLコーディングする人
データベースを設計する人
処理を書く人とエンジニアでも細分化しやすくなっています。

Laravelとは

世界で一番最初に流行したPHPのフレームワークは、CakePHPではないでしょうか。
それよりも前の時代はSmartyというテンプレートエンジンが使われてきました。
CakePHPが日本で流行した理由はドキュメント(レシピ)が日本語で作られていたからだと思います。

CakePHPやCodeigniter/ZendFramework等、様々なフレームワークが出現してきた時に突如現れたのがLaravelです。
2013年5月にLaravelのバージョン4がリリースされものすごい勢いで今まであったフレームワークを追い抜いていきました。
Laravelの元となるフレームワークはSymfonyです。Composerインストールするとわかりますが、Symfonyのモジュールがたくさんインストールされています。

Composerを使うことでベース機能以外に必要な機能を必要な時にインストールできるのも特徴です。

Laravelの更新周期はおおよそ6ヶ月に1回ほどで活発に修正や機能追加がされています。

Laravel5.8のインストール

サーバ要件

Laravel5.8では下記のサーバ要件が必要です。
開発するだけならビルトインサーバで問題ないので、
ローカルのPHPバージョンが7.1.3以上になっていることを確認しましょう。

PHP >= 7.1.3
OpenSSL PHP拡張
PDO PHP拡張
Mbstring PHP拡張
Tokenizer PHP拡張
XML PHP拡張
Ctype PHP拡張
JSON PHP拡張
BCMath PHP拡張

Composerのインストール

LaravelではComposerでパッケージのインストールが必要です。
こちらの記事を参考にComposerをインストールしましょう。

PHP Composerをインストールする

Laravelのインストール

Laravelのインストーラーをダウンロードし blog というプロジェクトを作成しましょう。
初回のComposerインストールではたくさんのモジュールがインストールされます。

bash
$ composer global require laravel/installer
$ composer create-project --prefer-dist laravel/laravel blog


 Installing laravel/laravel (v5.8.17)
- Installing laravel/laravel (v5.8.17): Downloading (100%)
Created project in blog
> @php -r "file_exists('.env') || copy('.env.example', '.env');"
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 80 installs, 0 updates, 0 removals
- Installing symfony/polyfill-ctype (v1.11.0): Loading from cache
- Installing phpoption/phpoption (1.5.0): Loading from cache
- Installing vlucas/phpdotenv (v3.4.0): Downloading (100%)
- Installing symfony/css-selector (v4.3.2): Downloading (100%)
- Installing tijsverkoyen/css-to-inline-styles (2.2.1): Loading from cache
- Installing symfony/polyfill-php72 (v1.11.0): Loading from cache
- Installing symfony/polyfill-mbstring (v1.11.0): Loading from cache
- Installing symfony/var-dumper (v4.3.2): Downloading (100%)
- Installing symfony/routing (v4.3.2): Downloading (100%)
- Installing symfony/process (v4.3.2): Downloading (100%)
- Installing psr/log (1.1.0): Loading from cache
- Installing symfony/polyfill-php73 (v1.11.0): Downloading (100%)
- Installing symfony/debug (v4.3.2): Downloading (100%)
- Installing symfony/polyfill-intl-idn (v1.11.0): Loading from cache
- Installing symfony/mime (v4.3.2): Downloading (100%)
- Installing symfony/http-foundation (v4.3.2): Downloading (100%)
- Installing symfony/event-dispatcher-contracts (v1.1.5): Downloading (100%)
- Installing psr/container (1.0.0): Loading from cache
- Installing symfony/event-dispatcher (v4.3.2): Downloading (100%)
- Installing symfony/http-kernel (v4.3.2): Downloading (100%)
- Installing symfony/finder (v4.3.2): Downloading (100%)
- Installing symfony/service-contracts (v1.1.5): Downloading (100%)
- Installing symfony/console (v4.3.2): Downloading (100%)
- Installing symfony/polyfill-iconv (v1.11.0): Loading from cache
- Installing doctrine/lexer (1.0.2): Downloading (100%)
- Installing egulias/email-validator (2.1.10): Downloading (100%)
- Installing swiftmailer/swiftmailer (v6.2.1): Loading from cache
- Installing paragonie/random_compat (v9.99.99): Loading from cache
- Installing ramsey/uuid (3.8.0): Loading from cache
- Installing psr/simple-cache (1.0.1): Loading from cache
- Installing opis/closure (3.3.1): Downloading (100%)
- Installing symfony/translation-contracts (v1.1.5): Downloading (100%)
- Installing symfony/translation (v4.3.2): Downloading (100%)
- Installing nesbot/carbon (2.21.3): Downloading (100%)
- Installing monolog/monolog (1.24.0): Loading from cache
- Installing league/flysystem (1.0.53): Downloading (100%)
- Installing erusev/parsedown (1.7.3): Loading from cache
- Installing dragonmantank/cron-expression (v2.3.0): Loading from cache
- Installing nikic/php-parser (v4.2.2): Downloading (100%)
- Installing doctrine/inflector (v1.3.0): Loading from cache
- Installing laravel/framework (v5.8.29): Downloading (100%)
- Installing fideloper/proxy (4.1.0): Loading from cache
- Installing beyondcode/laravel-dump-server (1.2.2): Loading from cache
- Installing jakub-onderka/php-console-color (v0.2): Loading from cache
- Installing jakub-onderka/php-console-highlighter (v0.4): Loading from cache
- Installing dnoegel/php-xdg-base-dir (0.1): Loading from cache
- Installing psy/psysh (v0.9.9): Loading from cache
- Installing laravel/tinker (v1.0.8): Loading from cache
- Installing fzaninotto/faker (v1.8.0): Loading from cache
- Installing hamcrest/hamcrest-php (v2.0.0): Loading from cache
- Installing mockery/mockery (1.2.2): Loading from cache
- Installing filp/whoops (2.4.1): Downloading (100%)
- Installing nunomaduro/collision (v3.0.1): Downloading (100%)
- Installing sebastian/version (2.0.1): Loading from cache
- Installing sebastian/resource-operations (2.0.1): Loading from cache
- Installing sebastian/object-reflector (1.1.1): Loading from cache
- Installing sebastian/recursion-context (3.0.0): Loading from cache
- Installing sebastian/object-enumerator (3.0.3): Loading from cache
- Installing sebastian/global-state (2.0.0): Loading from cache
- Installing sebastian/exporter (3.1.0): Loading from cache
- Installing sebastian/environment (4.2.2): Loading from cache
- Installing sebastian/diff (3.0.2): Loading from cache
- Installing sebastian/comparator (3.0.2): Loading from cache
- Installing phpunit/php-timer (2.1.2): Downloading (100%)
- Installing phpunit/php-text-template (1.2.1): Loading from cache
- Installing phpunit/php-file-iterator (2.0.2): Loading from cache
- Installing theseer/tokenizer (1.1.3): Downloading (100%)
- Installing sebastian/code-unit-reverse-lookup (1.0.1): Loading from cache
- Installing phpunit/php-token-stream (3.0.2): Downloading (100%)
- Installing phpunit/php-code-coverage (6.1.4): Loading from cache
- Installing doctrine/instantiator (1.2.0): Loading from cache
- Installing webmozart/assert (1.4.0): Loading from cache
- Installing phpdocumentor/reflection-common (1.0.1): Loading from cache
- Installing phpdocumentor/type-resolver (0.4.0): Loading from cache
- Installing phpdocumentor/reflection-docblock (4.3.1): Loading from cache
- Installing phpspec/prophecy (1.8.1): Downloading (100%)
- Installing phar-io/version (2.0.1): Loading from cache
- Installing phar-io/manifest (1.0.3): Loading from cache
- Installing myclabs/deep-copy (1.9.1): Loading from cache
- Installing phpunit/phpunit (7.5.14): Downloading (100%)
symfony/var-dumper suggests installing ext-intl (To show region name in time zone dump)
symfony/routing suggests installing symfony/config (For using the all-in-one router or any loader)
symfony/routing suggests installing symfony/yaml (For using the YAML loader)
symfony/routing suggests installing symfony/expression-language (For using expression matching)
symfony/routing suggests installing doctrine/annotations (For using the annotation loader)
symfony/polyfill-intl-idn suggests installing ext-intl (For best performance)
symfony/event-dispatcher-contracts suggests installing psr/event-dispatcher
symfony/event-dispatcher suggests installing symfony/dependency-injection
symfony/http-kernel suggests installing symfony/browser-kit
symfony/http-kernel suggests installing symfony/config
symfony/http-kernel suggests installing symfony/dependency-injection
symfony/service-contracts suggests installing symfony/service-implementation
symfony/console suggests installing symfony/lock
egulias/email-validator suggests installing ext-intl (PHP Internationalization Libraries are required to use the SpoofChecking validation)
swiftmailer/swiftmailer suggests installing ext-intl (Needed to support internationalized email addresses)
swiftmailer/swiftmailer suggests installing true/punycode (Needed to support internationalized email addresses, if ext-intl is not installed)
paragonie/random_compat suggests installing ext-libsodium (Provides a modern crypto API that can be used to generate random bytes.)
ramsey/uuid suggests installing ircmaxell/random-lib (Provides RandomLib for use with the RandomLibAdapter)
ramsey/uuid suggests installing ext-libsodium (Provides the PECL libsodium extension for use with the SodiumRandomGenerator)
ramsey/uuid suggests installing ext-uuid (Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator)
ramsey/uuid suggests installing moontoast/math (Provides support for converting UUID to 128-bit integer (in string form).)
ramsey/uuid suggests installing ramsey/uuid-doctrine (Allows the use of Ramsey\Uuid\Uuid as Doctrine field type.)
ramsey/uuid suggests installing ramsey/uuid-console (A console application for generating UUIDs with ramsey/uuid)
symfony/translation suggests installing symfony/config
symfony/translation suggests installing symfony/yaml
monolog/monolog suggests installing graylog2/gelf-php (Allow sending log messages to a GrayLog2 server)
monolog/monolog suggests installing sentry/sentry (Allow sending log messages to a Sentry server)
monolog/monolog suggests installing doctrine/couchdb (Allow sending log messages to a CouchDB server)
monolog/monolog suggests installing ruflin/elastica (Allow sending log messages to an Elastic Search server)
monolog/monolog suggests installing php-amqplib/php-amqplib (Allow sending log messages to an AMQP server using php-amqplib)
monolog/monolog suggests installing ext-amqp (Allow sending log messages to an AMQP server (1.0+ required))
monolog/monolog suggests installing ext-mongo (Allow sending log messages to a MongoDB server)
monolog/monolog suggests installing mongodb/mongodb (Allow sending log messages to a MongoDB server via PHP Driver)
monolog/monolog suggests installing aws/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB)
monolog/monolog suggests installing rollbar/rollbar (Allow sending log messages to Rollbar)
monolog/monolog suggests installing php-console/php-console (Allow sending log messages to Google Chrome)
league/flysystem suggests installing league/flysystem-eventable-filesystem (Allows you to use EventableFilesystem)
league/flysystem suggests installing league/flysystem-rackspace (Allows you to use Rackspace Cloud Files)
league/flysystem suggests installing league/flysystem-azure (Allows you to use Windows Azure Blob storage)
league/flysystem suggests installing league/flysystem-webdav (Allows you to use WebDAV storage)
league/flysystem suggests installing league/flysystem-aws-s3-v2 (Allows you to use S3 storage with AWS SDK v2)
league/flysystem suggests installing league/flysystem-aws-s3-v3 (Allows you to use S3 storage with AWS SDK v3)
league/flysystem suggests installing spatie/flysystem-dropbox (Allows you to use Dropbox storage)
league/flysystem suggests installing srmklive/flysystem-dropbox-v2 (Allows you to use Dropbox storage for PHP 5 applications)
league/flysystem suggests installing league/flysystem-cached-adapter (Flysystem adapter decorator for metadata caching)
league/flysystem suggests installing league/flysystem-sftp (Allows you to use SFTP server storage via phpseclib)
league/flysystem suggests installing league/flysystem-ziparchive (Allows you to use ZipArchive adapter)
laravel/framework suggests installing ext-pcntl (Required to use all features of the queue worker.)
laravel/framework suggests installing aws/aws-sdk-php (Required to use the SQS queue driver and SES mail driver (^3.0).)
laravel/framework suggests installing doctrine/dbal (Required to rename columns and drop SQLite columns (^2.6).)
laravel/framework suggests installing guzzlehttp/guzzle (Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (^6.0).)
laravel/framework suggests installing league/flysystem-aws-s3-v3 (Required to use the Flysystem S3 driver (^1.0).)
laravel/framework suggests installing league/flysystem-cached-adapter (Required to use the Flysystem cache (^1.0).)
laravel/framework suggests installing league/flysystem-rackspace (Required to use the Flysystem Rackspace driver (^1.0).)
laravel/framework suggests installing league/flysystem-sftp (Required to use the Flysystem SFTP driver (^1.0).)
laravel/framework suggests installing moontoast/math (Required to use ordered UUIDs (^1.1).)
laravel/framework suggests installing nexmo/client (Required to use the Nexmo transport (^1.0).)
laravel/framework suggests installing pda/pheanstalk (Required to use the beanstalk queue driver (^4.0).)
laravel/framework suggests installing predis/predis (Required to use the redis cache and queue drivers (^1.0).)
laravel/framework suggests installing pusher/pusher-php-server (Required to use the Pusher broadcast driver (^3.0).)
laravel/framework suggests installing symfony/dom-crawler (Required to use most of the crawler integration testing tools (^4.2).)
laravel/framework suggests installing symfony/psr-http-message-bridge (Required to use PSR-7 bridging features (^1.1).)
laravel/framework suggests installing wildbit/swiftmailer-postmark (Required to use Postmark mail driver (^3.0).)
psy/psysh suggests installing ext-pcntl (Enabling the PCNTL extension makes PsySH a lot happier :))
psy/psysh suggests installing ext-pdo-sqlite (The doc command requires SQLite to work.)
psy/psysh suggests installing hoa/console (A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit.)
filp/whoops suggests installing whoops/soap (Formats errors as SOAP responses)
sebastian/global-state suggests installing ext-uopz (*)
phpunit/php-code-coverage suggests installing ext-xdebug (^2.6.0)
phpunit/phpunit suggests installing phpunit/php-invoker (^2.0)
phpunit/phpunit suggests installing ext-xdebug (*)
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: beyondcode/laravel-dump-server
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
> @php artisan key:generate --ansi
Application key set successfully.

Laravelのビルトインサーバで動作確認

bash
$ cd blog
$ php artisan serve
Laravel development server started: <http://127.0.0.1:8000>

デフォルトではhttp://localhost:8000をブラウザで開くとLaravelの画面が表示されます。

ローカルサーバを停止する際は Ctrl+c をターミナルで実行するとサーバは停止します。

.gitignore設定

Gitコミットする際に忘れてはいけないのが.gitignore設定です。
これを忘れるとcomposerでインストールしたvendor系のファイルや.env等の環境設定がコミットされファイルが肥大化し本番・ステージ環境の環境設定が難しくなります。
インストールしたLaravelのファイルに .gitignore というファイル名で下記内容を記載し初期コミットに含めましょう。

bash
/node_modules
/public/hot
/public/storage
/storage/*.key
/vendor
.env
.env.backup
.phpunit.result.cache
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
参考 Laravel .gitignoreGithub

まとめ

  • PHPで一番使われているフレームワーク
  • MVCモデルで作業分担が簡単
  • おおよそ半年に1回ほどバージョンアップがある
  • ビルトインサーバがあるのですぐに開発可能