さくらの VPS を使う - 7. CakePHP
この記事は KainokiKaede Advent Calendar 2014 10日目の記事です(大嘘)
CakePHP を学べば富も名声も恣だと聞いたので学習しようと思ったのですが、まずは環境が必要なのでさくらの VPS に CakePHP が動く環境を整えました。
ちなみにこの記事は書きためで、記事作成 2013-02-12, 最終更新 2013-12-10 なのでやりかたが変わっている恐れがあります。あしからず。
参考サイト
CakePHP 公式のブログ作成チュートリアル を見ながらうごうご学習。
データベース準備と CakePHP 設置
$ ls /etc/php.d/
pdo.ini
, pdo_mysql.ini
の存在を確認。
$ vi /etc/php.ini
timezone
に date.timezone = "Asia/Tokyo”
を設定。
$ sudo service apache restart $ wget cakephp_file # Used 2.2.5 $ unzip cakephp.zip
ディレクトリ構造の解説:app
に作ったものを入れる。lib
はいじらない。vendors
にサードパーティーのプラグインを入れる。詳しくは公式 参照。
続いてユーザーとか作成。このサイト が結構まとまっている。
$ mysql -u root -p
mysql> create database caketutorial; mysql> grant all privileges on caketutorial.* to caketutorial@localhost identified by 'passoward'; mysql> flush privileges; mysql> use caketutorial mysql> exit
ブログデータベースの作成 にある手順で posts
テーブルとテスト用記事を作成。
$ vi cakephpdir/app/Config/database.php.default # Edit $default list $ mv cakephpdir /var/www/html/ $ sudo chown -R apache:apache /var/www/html/cakephpdir/app/tmp # chown-ing just this directory will do.
Web ブラウザでアクセスして、次のメッセージを確認。
Your database configuration file is present. Cake is able to connect to the database.
公式の salt と seed の設定方法 を参考に cakephpdir/app/Config/core.php に乱数を設定。salt には使えない記号があるのかもしれない(最初は何故かエラーになった)。
mod_rewrite
まわりでエラーが出てないのが逆に怖いけど完璧にブルーランプが点灯している welcome サイトっぽいのが表示されたのでこれはこれでいいということにしておく。
CakePHP アプリケーションの作成を開始
とにかく命名規則が大事らしい。
Model として Post.php
内に Post
クラスを作ると、Controller として PostsController.php
内に PostsController
クラスを作ったとき、その中から $this->Post->memberfunction()
で Post
モデルのメンバ関数にアクセスできるようになる。また、PostsController
クラスに hoge()
関数を作成した場合、www.example.com/posts/hoge
でアクセスできるようになる。しかし URL を意識した命名をする必要はない。routes 機能を使ってルーティングすることができるので。
おおむね ブログチュートリアル のとおりに作っていけばいい。しかしいくつかハマりどころが存在する。
まず、ファイル PostsController.php
があるのに「ファイルがありません!」というエラーが表示される。この場合は 解決策 を参考に php ファイルの先頭に <?php
をつけたら全てがうまくいった。チュートリアルなんだからそこまで書いておけよって思うけれど、たぶん PHP の基礎なんだろうな。まずは PHP の文法を学んでからコーディングをはじめよう。
ちなみに <?php
は PostsController.php
の先頭につけておくだけで良いみたいなんだけど、書いてないと気持ち悪いし Vim のシンタックスハイライトが使えなくなるから Model/Post.php
の先頭にも書いておいた。
これ以降どうやってアプリケーションを作るかとかはこの記事の範疇ではないので略。