meideru blog

家電メーカーで働いているmeideruのブログです。主に技術系・ガジェット系の話を書いています。

MAMPを使ってMacでCakePHP3の開発環境を整える方法

 

昨日、Web開発をもう一度勉強するという話をしました。

最近、バイトではWeb開発的なことをやっています。 実は過去にもWeb開発の入門をしたことがあるのですが、結局、今に至るまで役に立っていませんorzしかし、これを機にもう一度やってみようかと思います。今日はそんな話を記事に書きました( ^ω^ )バイトでやっているWeb開発について業務のことなので、あまり詳しくは言えませんが。。。少しだけ言うと、お客様が送ってくださるソフトウェアのフィードバック用のログを分析しそれを表示するためのウェブページを作っています。ページはPHPで書いて、JavaScriptでグラフを表示、み...

 

開発を行うには開発環境を整える必要があります。

そして、昨日はMac + CakePHP3 + Compser + MAMPで開発環境を整えました。

色々と躓いた点も多かったので、構築方法を記事に書けば少なからず需要があると思います。

是非、参考にしてください(*‘∀‘)

具体的な手順

大きく分けて行う作業は4つです。

  1. Composerのインストール
  2. php70-intlのインストール
  3. MAMPのインストール
  4. CakePHP3のインストール

これで開発環境を構築できます。

Composerのインストール

Composerとは

Composer」とは、PHPのパッケージ管理ツールのことです。(CakePHP)3からは、これを使うことが推奨されています。

これを使えば、CakePHPのインストール・アップデートを容易に行うことができるのです。

使わないとアップデートがあったときに手動で必要なファイルを入れ替えてやる必要があり、とても面倒なのです。

インストール方法

MacOSには、標準でHomebrewというパッケージ管理ソフトが入っています。これを使ってComposerをインストールします。

以下のコマンドを入力してください。

brew install composer

これでComposerがインストールできるはずです。

完了したら「composer -v」と入力してみてください。成功していればバージョンが表示されるはずです。

php70-intlのインストール

次に、php70-intlのインストールを行います。

php70-intlとは

php70-intlとは、PHPの拡張モジュールだそうです。これがないとComposerが動作しないとのこと。

因みに70はPHP7のことです。私はPHP7を使っているので、php70-intlをインストールする必要があります。PHP5などを使っていれば、php50-intlなどを入れる必要があります。

詳しくは調べてみてください。

php70-intlをインストールしないで次の作業を行うと

試しに、php70-intlをインストールせずにComposerを使ってCakePHP3をインストールしてみましょう。

meideru $ composer create-project --prefer-dist cakephp/app bookmarker
Installing cakephp/app (3.3.4)
  - Installing cakephp/app (3.3.4)
    Loading from cache

Created project in bookmarker
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - cakephp/cakephp 3.3.9 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.3.8 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.3.7 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.3.6 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.3.5 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.3.4 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.3.3 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.3.2 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.3.1 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.3.0-beta3 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.3.0-beta2 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.3.0-beta requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.3.0-RC1 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.3.0 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - Installation request for cakephp/cakephp 3.3.* -> satisfiable by cakephp/cakephp[3.3.0, 3.3.0-RC1, 3.3.0-beta, 3.3.0-beta2, 3.3.0-beta3, 3.3.1, 3.3.2, 3.3.3, 3.3.4, 3.3.5, 3.3.6, 3.3.7, 3.3.8, 3.3.9].

  To enable extensions, verify that they are enabled in those .ini files:
    - /usr/local/etc/php/7.0/php.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

 

「ext-intlが必要だからインストールしろ」というエラーがたくさん出ていますね。

つまり、php70-intlが必要であるということです。入れないとダメだということです。

インストール方法

php70-intlもHomebrewを使ってインストールします。(Homebrewは非常に便利なツールですねw)

 

まずは、php70-intlをHomebrewでインストールできるのか確認してみましょう。以下のコマンドを入力します。

meideru $ brew search intl
homebrew/php/php53-intl       homebrew/php/php55-intl       homebrew/php/php70-intl       intltool
homebrew/php/php54-intl       homebrew/php/php56-intl       homebrew/php/php71-intl

インストールできるintlがたくさんありますね。

私のはPHP7.0なので、php70-intlをインストールします。PHP5.6などを使ってい人は、php56-intlをインストールする感じで、自分に合ったものをインストールしてください。

 

php70-intlをインストールするためには、以下のコマンドを入力します。

meideru $ brew install php70-intl
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> Updated Formulae
alot

==> Installing php70-intl from homebrew/php
==> Downloading https://homebrew.bintray.com/bottles-php/php70-intl-7.0.14_8.sierra.bottle.tar.gz
######################################################################## 100.0%
==> Pouring php70-intl-7.0.14_8.sierra.bottle.tar.gz
==> Caveats
To finish installing intl for PHP 7.0:
  * /usr/local/etc/php/7.0/conf.d/ext-intl.ini was created,
    do not forget to remove it upon extension removal.
  * Validate installation via one of the following methods:
  *
  * Using PHP from a webserver:
  * - Restart your webserver.
  * - Write a PHP page that calls "phpinfo();"
  * - Load it in a browser and look for the info on the intl module.
  * - If you see it, you have been successful!
  *
  * Using PHP from the command line:
  * - Run `php -i "(command-line 'phpinfo()')"`
  * - Look for the info on the intl module.
  * - If you see it, you have been successful!
==> Summary
  /usr/local/Cellar/php70-intl/7.0.14_8: 6 files, 481.7K

 

これで完了です。

MAMPのインストール

MAMPとは、Macで動くLAMP環境のことです。Web開発をしようとしている人がこの記事を読んでいるわけですから、LAMP環境については説明しません。

(他にも同じようなソフトでXAMPPという有名なソフトもあるのですが、Mac + CakePHPでは相性が悪く、ダメでした。詳しくは下の追加情報をご覧ください。)

ダウンロードは以下の公式サイトから行ってください。PROという有料版もありますが、無料版で十分です。

インストール方法や詳しい使い方の説明は割愛します。グーグル先生に聞けばたくさんでてくるので、調べてみてください。

MAMPのダウンロード先

CakePHP3のインストール

それでは目的のCakePHP3をComposerを使ってインストールしてみましょう。

MAMPの公開ディレクトリに移動

まずは、MAMPの公開ディレクトリに移動します。公開ディレクトリはMAMPフォルダ内のhtdocsというフォルダです。ここにcdコマンドを使用して移動してください。(コマンドは省略)

CakePHP3のインストール

次に、PHP3のインストールです。以下のコマンドを入力してください。

meideru $ composer create-project --prefer-dist cakephp/app my_app_name

公開ディレクトリに移動しているはずなので、そこにインストールされます。

my_app_nameは、フォルダの名前になります。任意の名前に変えることができます。

しばらく時間がかかると思いますが、特にエラーメッセージなどが表示されなければ完了です。

テスト

それでは、CakePHP3が正しくインストールされているかテストしてみましょう。

MAMPのApacheを起動してください。

そして、ウェブブラウザでlocalhostにアクセスします。上のアドレスバーにlocalhostと入力すればアクセスできるはずです。

それで、CakePHP3の画面が表示されれば完成です。

@こんな画面です(バージョンによって異なります)
CakePHP3

 

表示されなかった人は、MAMPのApacheのポート番号を確認してみてください。ウェブブラウザは特に指定がなければ80番のポートに接続するようになっています。

MAMPのApacheのポート番号が8888などであれば、上のアドレスバーにlocalhost:8888と入力してアクセスしてみてください。

追加情報

最初は、Mac + XAMPP + CakePHP3 + Composerで開発環境を整えようと思ったのですが、ダメでした。

MacとXAMPPの相性が悪かったようです。

CakePHP3 をComposerでインストールしてみても、ブラウザに

「Fatal error: You must enable the intl extension to use CakePHP. in /Applications/XAMPP/xamppfiles/htdocs/bookmarker/config/bootstrap.php on line 27」

というメッセージが表示されてダメでした。

調べてみると、PHPにintlが入っていないからエラーであるとのこと。

解決方法は、php.iniのintl.dllのコメントアウトを外せば良い、とのことでしたが、外しても解決できませんでした。

というか、dllファイルってWindowsの話であって、Macには関係ないのでは?

結局のところ、XAMPPでは解決できなかったので、MAMPで開発環境を整えてしまいました。

皆さんもMAMPをオススメします。

 

以上です!

ノシ

 

PS

MAMPのインストール後は、標準で入っている(もしくは自ら入れた)PHPとMySQLをアンインストールして、MAMPのPHPとMySQLのパスを通すことをオススメします。

2つ入っている状態だと互いに干渉しあって上手くいかないことが多々あります。

 - 技術系