こんばんは、cloudpack の @dz_ こと大平かづみです。
Prologue – はじめに
CakePHP2 に触れる機会があったのでメモをまとめます。ちなみに、最新バージョンの 3.x ではなく、2.x 系です。
今回は、手始めにチュートリアルのブログ作成を試しました。
ポイントまとめ
実は英語ページ読みながらやってたんですが、日本語ページがあったんですね(笑)
基本的な手順はドキュメントを参考いただくとして、記載されて内部分でつまづいたところの備忘録を書きます。
各種インストール
# apache インストール yum install httpd # mysql 関連のインストール yum install mysql mysql-server # php 関連のインストール yum install php php-mysql php-pdo php-mbstring php-mcrypt php-xml
事前準備
- mysql-server の初期設定
- 【MySQL, 開発環境】MySQLのインストールと初期設定
- いつも忘れてしまいます。今回はこちらを参考にしました。
- mysql ユーザ作成、データベース作成
- テーブルデータを流すときに必要になりますので、一般的な手順で作成してください。
- また、 database.php に ユーザ名 、 パスワード 、 データベース名 を記載する手順があります。
- Apache 起動後、 phpinfo() などで、 pdo_mysql と mod_rewrite が組み込まれていることを確認してください。
CakePHP2の用意
(ドキュメントトップから読んでいたのに、このページなぜか読み飛ばしてました…)
トラブルシューティング
date.timezone でエラー
いざサンプルを動かしてみたら、以下のように date.timezone でエラーが発生した場合には、
Warning: strtotime(): It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘UTC’ for ‘UTC/0.0/no DST’ instead in /var/www/html/lib/Cake/Cache/CacheEngine.php on line 60
以下のように app/Config/core.php でタイムゾーンを指定できます。
app/Config/core.php ... /** * Uncomment this line and correct your server timezone to fix * any date & time related errors. */ //date_default_timezone_set('UTC'); date_default_timezone_set('Asia/Tokyo'); //もしくは /etc/php.ini を修正します。date.timezone = の部分がコメントアウトされているので、以下のように "Asia/Tokyo" を設定して下さい。
/etc/php.ini [Date] date.timezone = "Asia/Tokyo"mode_rewrite のエラー
サンプルブログが動いたものの、CSSがあたってなくて、以下のエラーが表示されているときは、 URLリライティングがうまく行っていません。
URL rewriting is not properly configured on your server. 1) Help me configure it 2) I don't / can't use URL rewriting
そんなときは以下を参考に、 httpd.conf の AllowOverride の設定や .htaccess の記述を見直してください。
AllowOverrideの設定は複数箇所あるので、確認してみて下さい。
プラグインのインストールでエラー (phpunit, ext-mcrypt, ext-dom)
公式のプラグイン DebugKit などをインストールしようと、 php composer.phar install を行うと以下のエラーが返されました。この場合は php-mcrypt と php-xml をインストールしてください。
Loading composer repositories with package information Installing dependencies (including require-dev) Your requirements could not be resolved to an installable set of packages. Problem 1 - The requested PHP extension ext-mcrypt * is missing from your system. Problem 2 - phpunit/phpunit 3.7.9 requires ext-dom * -> the requested PHP extension dom is missing from your system. ...
DebugKitがインストールされない
DebugKitプラグインをインストールしたはずなのに、以下のようにインストールされていないことになっていました。
DebugKit is not installed. It will help you inspect and debug different aspects of your application.
どうやら、プラグインのロードが行われていません。こちらのCakePHP2系へのDebugKitを導入を参考に以下を対処しました。
app/Config/bootstrap.php ... /** * Plugins need to be loaded manually, you can either load them one by one or all of them in a single call * Uncomment one of the lines below, as you need. Make sure you read the documentation on CakePlugin to use more * advanced ways of loading plugins * * CakePlugin::loadAll(); // Loads all plugins at once * CakePlugin::load('DebugKit'); //Loads a single plugin named DebugKit * */ CakePlugin::load('DebugKit'); //app/Controller/AppController.php class AppController extends Controller { var $components = array('DebugKit.Toolbar'); //DebugKitが見つからない
今度はプラグインのロードに失敗しました。
Error: The application is trying to load a file from the DebugKit plugin
Error: Make sure your plugin DebugKit is in the app/Plugin directory and was loaded
どうやら、CakePHPは
/app/Plugin を見に行くのに、composer でインストールしたプラグインは /Plugin に格納されたので見つからなかったようです。私は以下のようにシンボリックリンクを貼りました。 #/app/Plugin/DebugKit に /Plugin/DebugKit へのシンボリックリンクを作成 ln -s /var/www/html/Plugin/DebugKit app/Plugin/DebugKit Epilogue - おわりに
最近少しずつウェブサーバーを立てるのが早くなってきました(まだまだですが)。はじめてシリーズもだんだんと雑に…もとい手慣れてきました。そろそろ、はじめてシリーズ脱却か!?精進します!
近況
最近
- Check! はじめての Zabbix インストール on Debian x Amazon RDS
- [初メモ] はじめての Tomcat 〜 つまづいたところまとめ (Java のバージョン指定、起動パラメータ など)
- Check! はじめての CakePHP2 ポイントまとめ 〜 Blog Tutorial を動かそう ← new!!
Phalcon関連
- 爆速フレームワーク!! Phalcon PHP Framework
- Meet Volt ! Phalcon 謹製テンプレートエンジン Volt - from 第71回 PHP勉強会
- Meet Phalcon! - Phalcon PHPフレームワークを Nginx on Amazon EC2 にインストール!
fluentd関連
- Check! はじめての fluentd を Amazon Linux で動かしてみる (ログを PHP から送る)
- Check! はじめての Fluentd 〜 IAMロールで Amazon EC2 と S3 間をセキュアに
技術ブログ寄稿
cloudpack技術ブログでも、AWS Lambda や 運用ツール Serf に関して記事を書いています。ご興味あれば読んでいただけると嬉しいです!
- 大平 かづみ の記事一覧