Laravel はオープンソースの PHP アプリケーションフレームワークの一つで、CakePHP や CodeIgniter、FuelPHP などと並び多くの注目を集めています。
この記事では、Mac に Laravel 5 をインストールする手順や発生した問題とその解決方法について書き留めておきます。
現在の環境とインストール予定のバージョンはこちらです。
OS X Yosemite 10.10
Laravel 5.0 または Laravel 5.1
詳細な説明に入る前にインストールの流れを見ておきます。
(1) Composer のインストール
(2) Composer を使って Laravel をインストール
(3) Composer を使って Laravel プロジェクトを作成
すべてが順調に行けば以上の3ステップで導入できますが、実際にはいくつかの問題が発生し、遠回りすることになりました。順を追って説明していきます。
Composer のインストール
Composer は PHP のパッケージ管理ツールです。これを使うことにより依存関係を解決してパッケージをインストールしたり、アップデートを行うことができます。Laravel 専用のツールというわけではなく、Cake PHP などのインストールにも使われています。
インストールするには次のコマンドをコンソールで実行します。
curl -sS https://getcomposer.org/installer | php
実行すると composer.phar ファイルがダウンロードされます。
そのままでは使いにくいのでパスの通っているディレクトリに移動させます。
sudo mv composer.phar /usr/local/bin/composer
これで composer と入力しただけで composer.phar が実行できるようになりました。
試しにバージョンを確認してみます。
composer --version Composer version 1.0-dev (e64470c987fdd6bff03b85eed823eb4b865a4152) 2015-05-28 14:52:12
正しくインストールされていればバージョンが表示されます。
Laravel のインストール
Laravel インストールには Composer を使って次のようにします。
最新の情報は公式ドキュメント(5.0 / 5.1)を参照してください。
composer global require "laravel/installer=~1.1"
Laravel プロジェクトの作成
Laravel をインストールしたので Composer から Laravel プロジェクトが作れるようになります。
ただし、作成するにはサーバーが次の要件を満たしている必要があります。
【Laravel 5.0】
PHP >= 5.4
Mcrypt PHP Extension
OpenSSL PHP Extension
Mbstring PHP Extension
Tokenizer PHP Extension
【Laravel 5.1】
PHP >= 5.5.9
OpenSSL PHP Extension
Mbstring PHP Extension
Tokenizer PHP Extension
PHP のバージョンを確認するために「$ php -v」コマンドを入力すると、「PHP 5.5.20 」であることがわかりました。Yosemite に標準搭載されている PHP のバージョンには問題ないようです。「which php」コマンドで場所を確認すると「/usr/bin/php」にあることがわかります。
しかし、標準搭載の PHP には Laravel 5.0 に必要な Mcrypt というエクステンションがインストールされていないため、このまま Laravel プロジェクトの作成をしようとすると次のような警告が出ます。(Laravel 5.1 では必要ありません)
Your requirements could not be resolved to an installable set of packages. Problem 1 - Installation request for laravel/framework v5.0.16 -> satisfiable by laravel/framework[v5.0.16]. - laravel/framework v5.0.16 requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
そのため、先に「ext-mcrypt」を使えるようにしておく必要があります。
方法は2つあり、もし開発に MAMP を使っているのなら、そちらの PHP をコンソールから使えるように修正し、ext-mcrypt を有効にするという手があります。
【MAMP の PHP をコンソールから使う場合】
コンソールで「php」というコマンドを使った時、通常は「/usr/bin/php」が実行されます。そこで、.bash_profile ファイルにパスを通して、「/Applications/MAMP/bin/php/」の中にある PHP が実行されるように変更します。
$ vi ~/.bash_profile
vi で .bash_profile ファイルを開いたら、次の行を追加します。
export PATH=/Applications/MAMP/bin/php/php5.6.7/bin:$PATH
「php5.6.7」の部分はインストールされている MAMP によって異なります。環境に合わせて書き換えてください。
.bash_profile への変更はログインし直すか下記コマンドを実行しない限り即時には反映されません。
source ~/.bash_profile
MAMP に入っている PHP には ext-mcrypt が付属されています。有効になっていない場合は php.ini を書き換えて有効にします。php.ini は「/Applications/MAMP/bin/php/php5.6.7/conf/php.ini」にあります。
「;extension=mcrypt.so」となっている部分を探して「extension=mcrypt.so」のように先頭の「;」を外したら、MAMP の Apache を再起動させます。
【標準搭載されている PHP に ext_mcrypt をインストールする場合】
Mac に標準搭載されている PHP に ext_mcrypt をインストールする場合は .bash_profile などを変更する必要はありません。
インストールを簡単にするために Homebrew というパッケージマネージャーを利用します。
まずはその Homebrew をインストールします。
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
インストールできていれば「brew -v」コマンドでバージョンが確認できるはずです。
次に「brew search mcrypt」コマンドで mcrypt に関連するパッケージを検索します。
こちらの環境では次のパッケージが見つかりました。
$ brew search mcrypt libtomcrypt mcrypt homebrew/php/php53-mcrypt homebrew/php/php55-mcrypt homebrew/php/php54-mcrypt homebrew/php/php56-mcrypt
PHP のバージョンに合ったものをインストールします。「php -v」コマンドで調べると「PHP 5.5.20」であることがわかったので「homebrew/php/php55-mcrypt」を次のようにしてインストールします。
brew install homebrew/php/php55-mcrypt
こちらで試した時は必要ありませんでしたが、こちらの二行を先に実行しておく必要がある場合もあります。
brew tap homebrew/php brew tap homebrew/dupes
インストールが完了したら php.ini にこのエクステンションを有効にするための記述を追加します。
php.ini は /etc/php.ini にあるものが読み込まれますが、php.ini.default というファイルしかない場合があります。その場合は php.ini.default をコピーして php.ini に名前を書き換えます。
内容を確認し「;extension=mcrypt.so」という行があれば先頭の「;」を外し、無ければ「extension=mcrypt.so」」という行を追加します。追加が終わったら保存して Apache を再起動させます。再起動のコマンドはこちらです。
sudo apachectl restart
さて、これで PHP と mcrypt の準備が整いました。いよいよ Laravel のプロジェクトを作成します。まずは cd コマンドでドキュメントルートに移動します。MAMP を使っている場合は「cd /Applications/MAMP/htdocs」ですが、Mac の Apache を使っている人は「cd /Library/WebServer/Documents」になるかと思います。次にプロジェクトを作成するためのコマンドを実行します。
◆最新バージョンのインストール
composer create-project laravel/laravel プロジェクト名 --prefer-dist
◆バージョンを指定したインストール(5.0 の場合)
composer create-project laravel/laravel プロジェクト名 5.0 --prefer-dist
プロジェクト名の部分は好きなように書き換えてください。その名前のフォルダが作られます。公開ディレクトリはその中にある「public」というフォルダなので「http://localhost/プロジェクト名/public」でブラウザから確認ができるはずです。
通常は Laravel のデモ画面が表示されますが、おそらく真っ白な画面しか表示されないと思います。というのもフォルダ storage 以下に対して Apache が書き込めるようにパーミッションを設定していないからです。
そこで storage に対して 777 の権限をもたせます。
sudo chmod -R 777 storage
設定が済んだら再度「http://localhost/プロジェクト名/public」にアクセスしてみてください。
うまくいっていればデフォルトのウェルカムメッセージが表示されるはずです。