Cakephp3本番環境ではエラー表示をさせたくない

前回まで

Cakephp3を使っていると、本番環境ではCakephpテンプレートエラーを出したくない場合もある。

いろんな方法があるが、ここでは Configure::read(‘debug’) の値をif判定する。
※本番環境: 0 開発環境: 1

URLの打ち間違いの40x系ページと、phpエラー等の50x系のページに判定分を追加する

本番用レイアウトページを複製して修正

cakephp3でデプロイ環境先毎にDB接続先を切り替えたい場合

cakephp3でデプロイ環境先毎にDB接続先を切り替えたい場合

環境毎にWebサーバに記述して再起動しておく
apache の場合

nginxの場合

bootstrapファイルを編集する

設定ファイルをapp.phpからコピーする

接続先等を適宜編集する

参考
http://easyramble.com/switch-environment-with-cakephp.html
http://easyramble.com/switch-cakephp-env.html
ありがとうございました

phpのデプロイツールdeployerでcakephp3のデプロイを試してみる

phpのデプロイツールdeployerを試してみる。
今回はcakephp3をデプロイしてみるイメージ。
リポジトリはsvnで。

vagrant で、3台のゲストサーバを用意する。

なお、デプロイ先のサーバで svn(とかgit) コマンドがインストール済みで、かつ一度svnコマンドを実行して(p)とかを押している必要あり。

参考
https://deployer.org/

nginx1.10 + cakephp3.2 を試してみる

前回からの続き

インストール

nginxの設定ファイル

参考


多謝

cakephp 2.2.2 で Json view


<?php // app/Controller/AbcController.php class AbcController extends AppController {  public function index()  {   $this->viewClass = 'Json';
  $this->set('aaa', 1);
  $this->set('bbb', "b");
  $this->set('ccc', array('c'=>3));
  $this->set('_serialize', array('aaa','bbb','ccc'));
 }
}

実行結果

{
 "aaa": 1,
 "bbb": "b",
 "ccc": {"c": 3}
}

cakephp 1.3 テーブル連結

自分用メモ

cakephp 1.3 テーブルの連結

■テーブルを連結 $hasOne してデータ取得するまで
————————————————————
データベースにmembersテーブルと連結するProfilesテーブルを作成
————————————————————
mysql>
CREATE TABLE profiles (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, member_id INT UNSIGNED UNIQUE, freetext VARCHAR(200));
INSERT INTO profiles (id, member_id, freetext) VALUES (0,’4′,’FREEEEEEEEE’); # サンプルデータ
————————————————————
※テーブル名に複数形sがついていることに注意
※profiles テーブルの id カラムと連結させるのは members テーブルのidと指定
————————————————————
モデル
————————————————————
$ vi app/models/member.php
————————————————————
class Member extends AppModel
{
 var $name = ‘Member’;
 var $hasOne = array(
  ’Profile’ =>
  array(
   ’className’ => ‘Profile’,
   ’conditions’ => ”,
   ’order’ => ”,
   ’dependent’ => true,
   ’foreignKey’ => ‘member_id’
  )
 );
}
————————————————————
コントローラ
————————————————————
$ vi app/controllers/member_controller.php
————————————————————
<?php
class MemberController extends AppController
{
function index()
{
 $results = $this->Member->find(‘first’, array(‘conditions’=>array(‘Member.id’=>4)));
 $this->set(‘results’, $results);
 //var_dump($results);
 }
}
————————————————————
ビュー
————————————————————
$ vi app/views/member/index.ctp
————————————————————
<li><?php echo $results[‘Member’][‘id’]; ?></li>
<li><?php echo $results[‘Member’][‘name’]; ?></li>
<li><?php echo $results[‘Profile’][‘id’]; ?></li>
<li><?php echo $results[‘Profile’][‘member_id’]; ?></li>
<li><?php echo $results[‘Profile’][‘freetext’]; ?></li>
————————————————————

cakephp 1.3 インストール

自分用メモ

Cakephp 1.3 をダウンロードして解凍してウェブサーバースペースに配置
http://cakephp.org/

ブラウザでアクセスするとエラーが出るのでphp.ini設定変更
$ sudo vi /etc/php.ini
;date.timezone =
date.timezone = Asia/Tokyo

Apacheのcakephp1.3配下の設定変更
$ sudo vi /etc/httpd/conf/httpd.conf
————————————————————
<Directory “/var/www/html/cakephp1.3″>
AllowOverride All
</Directory>
————————————————————

Apache 再起動
$ sudo /etc/init.d/httpd restart

cakephpのtmpディレクトリパーミッション設定
$ cd /var/www/html/cakephp1.3/app/
$ chmod -R 777 tmp

cakephpの設定ファイルを変更
$ sudo vi /var/www/html/cakephp1.3/app/config/core.php
Security.salt と Security.cipherSeed の値を書き換える

cakephpデータベース接続設定
$ cp /var/www/html/cakephp1.3/app/config/database.php.default /var/www/html/cakephp1.3/app/config/database.php
$ vi /var/www/html/cakephp1.3/app/config/database.php
————————————————————
public $default = array(
‘datasource’ => ‘Database/Mysql’,
‘persistent’ => false,
‘host’ => ‘localhost’,
‘login’ => ‘testsys’,
‘password’ => ‘testpass’,
‘database’ => ‘testdb’,
‘prefix’ => ”,
//’encoding’ => ‘utf8’,
);
————————————————————

cakephp 1.3 サンプルコード

自分用メモ

■cakephp 1.3 でDB連携してデータ取得するまで
————————————————————
1. データベースにテーブルを作成
————————————————————
mysql>
CREATE TABLE members ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
————————————————————
※テーブル名に複数形sがついていることに注意
————————————————————
2. モデルの作成
————————————————————
$ vi app/models/member.php
————————————————————
<?php
class Member extends AppModel
{
 var $name=”Member”;
}
————————————————————
3. コントローラの作成
————————————————————
$ vi app/controllers/member_controller.php
————————————————————
<?php
class MemberController extends AppController
{
 public $scaffold;
}
————————————————————
4. ブラウザで確認
————————————————————
http://localhost/cakephp1.3/member
————————————————————

■全レコード取得
————————————————————
コントローラ
————————————————————
$ vi app/controllers/member_controller.php
————————————————————
<?php
class MemberController extends AppController
{
 function index()
 {
  // all records
  $results = $this->Member->find(‘all’);
  $this->set(‘results’, $results);
 }
}
————————————————————
ビュー
————————————————————
$ vi app/views/member/index.ctp
————————————————————
<?php foreach($results as $v): ?>
<li><?php echo $v[‘Member’][‘id’] . $v[‘Member’][‘name’]; ?></li>
<?php endforeach; ?>
————————————————————

■1レコード取得
————————————————————
コントローラ
————————————————————
$ vi app/controllers/member_controller.php
————————————————————
<?php
class MemberController extends AppController
{
 function index()
 {
  // 1 record
  $results = $this->Member->find(‘first’, array(‘conditions’=>array(‘id’=>4)));
  $this->set(‘results’, $results);
 }
}
————————————————————
ビュー
————————————————————
$ vi app/views/member/index.ctp
————————————————————
<?php foreach($results as $v): ?>
<li><?php echo $v[‘id’] . $v[‘name’]; ?></li>
<?php endforeach; ?>
————————————————————