PHP5.6 + CakePHP 2.x のセットアップ

広告:超オススメUnity Asset
  広告:超オススメUnity Asset

以前、Azure + CakePHPの組み合わせで手軽にCakePHPを利用しようとしたのですが、当然使えると思っていたリモートコンソールでの cake bake コマンドがなんらかの理由で動作しないため、かえって不便、というか、Azureである必要もなくなってきたので、CakePHPに関しては、通常のPHPが動くWebサーバに設置し直してみようと思います。

ざっとこんな感じ

  • CakePHP 2.x (2.10.10)
  • PHP5.6環境
  • BitBucketでGit管理(プライベートリポジトリが無制限無料なので)
  • コードエディタ(IDE)としてPhpStormを利用
  • Heteml のWebサーバとMySQL

ここでは、CakePHP 2.x をセットアップします。2.xは、PHPも7では動かないようなので(2.10.10は7でも動くのかも?)、5.6環境を準備しています。また、データベースへの接続部分は、次のMEMOで書こうと思いますので、ここではDebugKitをインストールして、こんな感じになるまでのMEMOです。

25

※ データベースの設定以外は緑になっている様子。

CakePHP 2.x を落とす

GitHubからzipをダウンロードするか(追記:ダウンロードしたものだと何か欠けるのかうまくいきませんでした git clone の方がいいかも)、ターミナルを開いて、落としたいフォルダに移動して2.xブランチのクローンを作成します。

cd /Users/tshiraishi/Documents/_CakePHP
git clone -b 2.x git://github.com/cakephp/cakephp.git
Cloning into 'cakephp'...
remote: Counting objects: 375364, done.
remote: Compressing objects: 100% (90/90), done.
remote: Total 375364 (delta 53), reused 53 (delta 27), pack-reused 375246
Receiving objects: 100% (375364/375364), 75.76 MiB | 673.00 KiB/s, done.
Resolving deltas: 100% (282700/282700), done.
tshiraishi-MacBook:_CakePHP tshiraishi$

cakephp/lib/Cake/VERSION.txt を見てみると「2.10.10」(2018.5.16現在)

ソース保管場所をBitBucketに

ソース管理しないといけないわけではありませんが、のちに共同作業したりするのに便利なので、先にソース管理の設定をしておきます。もちろんGitHubでもいいのですが(GitHubなら、フォークしてからクローンするのがよさそうですね)、BitBucketは、プライベートリポジトリが無制限無料なのでこっちにしときました。

01 1

リモートリポジトリを用意しておきつつ、先ほどクローンしたローカルリポジトリを管理します。SourceTreeがGit管理アプリとして使いやすいので、いつもこれを使っています。「既存のローカルリポジトリを追加」し、「2.x」というブランチを元に「mushikago(任意)」というブランチを作って、ここで作業していくことにします。

01 2

このローカルリポジトリのリモートリポジトリの設定を、先ほど作成したBitBucketに変更しておきます。URLをこういうところからコピーして、

02

SourceTreeの「設定」でリモートリポジトリのパスを書き換えます。

03

04

 IDEとしてPhpStormを使ってみます

これもなんでもいいのですが、PHPが扱いやすそうでCakePHPもなんらかのサポートをしているようなので PhpStorm を使ってみます。CakePHPのViewが「.ctp」というファイルなのでこの拡張子を登録して認識させておきます。

05

すると、カラーリングもされるようになります。さっそく、「app/View/Layouts/default.ctp」のこの辺の見えるところに適当な文字を書いて保存、つまり修正を与えてみます。ブランチが先ほど作成した自分のブランチになっていることも確認できます。

06

SourceTreeでコミット。(同時にプッシュせず、あとで改めてプッシュしてみます)

07

プッシュしようとすると、どのブランチをプッシュするか聞かれるので、先ほど作成したブランチだけを選択。リモートはまだ何もないので、新たに同じ名前のブランチが作成されることになります。

08

最初の最初なので、結構時間がかかりますが、無事にプッシュされるとBitBucket上ではこんな感じに。

09

PHP5.6をMacへインストール

ターミナルで php -v と打ってみると、インストール済みで現在アクティブなPHPのバージョンが返ります。

PHPは最初からMacに入っていたりするものの、必要とするバージョンとは異なったりするので、「phpenv」というもので複数バージョンを切り替えて使えるようにしてみます。と思ったのですが、rubyか何かの同様の機能とコンフリクトしているためか、うまく行かなかったので、phpenvは諦め、単純に5.6環境にするだけにします。(こういうことをMacにセットアップせずに運用したかったので、ローカル環境はスッキリさせて、Azureだけでやろうとしていたのですが。。)

brew」も使えるようにして、こちら↓も参考にしつつ、

参考にしたサイト リポジトリを追加brew tap homebrew/dupesbrew tap jo…

ターミナルで「brew install php56」を実行。上記とはちょっと違いますが、「vi」を使って、「~/.bashrc」(あるいは「~/.bash_profile」)に直接以下を書き込んで保存、再読み込みします。

export PATH="/usr/local/opt/php@5.6/bin:$PATH"
export PATH="/usr/local/opt/php@5.6/sbin:$PATH"

vi は、以下くらい知っておけば、ターミナルから使えるエディタとしてそこそこ使えると思います。

  • i・・・入力モード
  • Escキー・・・入力モード解除
  • x・・・削除
  • Escキー押してから:q・・・保存せずに終了。
  • :wq!・・・保存して終了。

 修正したら、「source ~/.bashrc」で.bashrcを再読み込み。PHPのバージョンを確認して、5.6.xと返ってきたら成功です。

php -v

PHP 5.6.36 (cli) (built: Apr 26 2018 22:02:57)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

 MySQLをMacへインストール

最終的には、サーバー上のMySQLのデータを使うのですが、CakePHPのコマンドをローカルで使うのに必要なため、基本的には、サーバ上にあるMySQLと同じ構造を持ったMySQL環境をローカルに用意しておく必要があると思います。

MySQLは、以下のくらい知っておけば使えると思います。

brew install mysql(mysqlをインストール)
mysql.server start(mysqlを稼働)
mysqladmin ping -u root(mysqlが動作中か確認)

Composerをセットアップ

DebugKitをインストールするときなど、あとから使ったりするので、ついでにここで、Composerというものをセットアップしておきます。cakePHPのappフォルダがある場所に移動して、以下の4行で、「composer.phar」というものが作られます。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

php composer-setup.php

php -r "unlink('composer-setup.php');"

PhpStorm内にComposerを作る機能もあるようですね。

ソフトウェア上で作れるので、こっちの方が便利そう。

Tools > Composer > init Composer …

10

「composer.phar」を選択し、デフォルトのままでもいいかもですが、「…」を選んで

11

 PHP5.6と明示的に指定しておきます。ここに追加しておくと、

12

ここで選択できるようになります。

13

14

どちらのやり方でも、「composer.phar」というファイルができあがります。これのパーミッションを設定して、「/usr/local/bin/composer」へ移動しておきます。

sudo chmod 755 composer.phar
mv composer.phar /usr/local/bin/composer

 Webサーバーへアップロード

さて、ここまでいろいろ準備できたら、いよいよCakePHPフォルダごとサーバーにアップロードします。そう、CakePHPって、このフォルダをアップロードするだけなんですね。ここではheteml を利用していますが、PHPとMySQLが使えればどこでもいけると思います。

CakePHPアプリのルートディレクトリ(「app」フォルダが入っているフォルダがCakePHPアプリのルートです。)にアクセスすると、いきなり、いくつかのエラーが表示されると思います。ここまでの流れでは、こんなエラーが出ます。これらのエラーをひとつひとつ直して行きましょう。

まず、赤の「Security.salt」と「Security.cipherSeed」について

16

これは、「app/Config/core.php」の以下の二つの文字列を適当な値に変えます。これだけで、赤のエラー2つは消えると思います。

17

「Salt and CipherSeed Generator」こういうのも↓
https://cakephp.thomasv.nl

コミット&プッシュももうSourceTreeを使わないで、PhpStormから直接やってみましょう。

「VCS > Git > Commit File」を開いて、Commit Messageを書き込んで「Commit」。ただ、これはAzureのときと違って、ソース管理のリモートリポジトリにプッシュしただけで、Webサーバーへは改めてFTPソフトでアップロードする必要があります。これが面倒になってくるので、そのうち、PhpStormで保存するたびに自動的にFTPでアップロードするようにしようと思います。(そのMEMOはまたこんど)

改めて、サイトを確認してみると

19

DebugKit(CakePHPのプラグイン)をインストール

やっと、ここまできましたね。残り二つの黄色を対処したいと思いますが、このMEMOでは、残りDebugKitをインストールするところまで。先ほどの Composer コマンドを使います。

CakePHPのルート(app/がある場所)にある「composer.json」というファイル内で2箇所を書き加えます。

ひとつは、「require-dev」という項目に、「"cakephp/debug_kit": "2.2.*"」を追加(配列なのでカンマを忘れずに)

20 1

もうひとつは、「scripts」の次に「extra」を以下のように。

20 2

source code by gist.

DebugKitのインストールについては、Azureのときも同様だったので、こちらもご参考に。

「Microsoft Azure に CakePHP をセットアップして ローカルGit でソース管理」でセットアップしたCakePHPには...

composer.jsonを書き換えたら、ターミナルで、CakePHPアプリのルート(appフォルダのある場所)まで移動して、「composer update」を実行すると、やっと「DebugKit」というフォルダが「app/Plugin」に作成されます。この「DebugKit」フォルダをまるまるアップロード。ただし、まだDebugKitのセットアップは、完了ではありません。

21

23

最後、「app/Config/bootstrap.php」に「CakePlugin::load('DebugKit');」という記述を書き加えて保存、アップロード。

24

これでようやく、ブラウザでCakePHPアプリのルートディレクトリへアクセスしてみると、こんな風になります。

25

残すところ、

Your database configuration file is NOT present.

というデータベースの設定部分をセットアップすれば、すべて緑色になって問題なくCakePHPが使えるようになります。データベース接続部分については、次のMEMOで。

スポンサーリンク