cakephp2 – database.phpの情報でmysqlのpdoで接続する

cakephp2で、database.phpの情報でmysqlのpdoで接続する方法。

下記で、database.phpで設定している内容を取得できる。

下記で、dbに接続できる。

下記で、データベースに存在するテーブルをすべて削除できる。

下記で、データベースにsqlをインポートできる。

cakephp3 – Bake

composerでインストール

bake

下記のような感じでbakeできる。2と特段変わらない。

mac – El CapitanでcakePHP3を使う

Macの状態

  • macは、El Capitan 11.10.5です。
  • すでに、PHP7、MySQL、Nginxが入っています。composerもインストール済みです。
  • Nginxのドキュメントルートは、/usr/local/var/wwwです。

cakephp3のプロジェクトを作成する

ドキュメントルートに移動して、hogeプロジェクトを作成します。

php-fpmが変だったので直した

cakePHP3は、php5.5.9以上が必要で、php7もOKということで、php7をインストールしました。しかしphp-fpmのバージョンを確認すると、以前インストールされていたphp5.3のものでした。

php7のインストールは、 mac – phpを7.0にバージョンアップに記載の方法でやりました。php7のパスは、/usr/local/php5/binです。これに対応するphp-fpmは、/usr/local/php5/sbin/php-fpmです。なので、/usr/local/php5/sbinもパスに加えたらOKになりました。

.bash_profileを開く

下記を最後に追加する

.bash_profileを読み込む

php-fpmを起動

php-fpmのバージョン確認

Nginxの設定をcakephpに合わせて変更する

nginx.confを修正する

Nginxを再起動する

cloud9でcakephp3・MySQLを使う

cloud9プロジェクトの作成

cloud9でPHPを選択してプロジェクトを作ります。

MySQLの起動

phpMyAdminのインストール

上記URLにアクセスしたらphpMyAdminが表示される。初期ではusernameと、パスワード空で入れる。root以外のユーザを作成したりする。

composerのインストール

composerを移動する

cakeプロジェクトの作成

プレビューを見る

cloud9のメニューのPreviewからプレビューを開く。database.phpの設定がまだだが、とりあえず初期画面が表示される。

cake3

database.phpの設定

config/app.phpの229行目に下記があるので、修正する。

cakephp2 – csvダウンロード

CsvHelperがあります。
https://github.com/dai199/cakephp-csv-helper

書き方は、下記のような感じになります。(上記GitHubの使い方の説明を引用)

これは、ここに記載している内容と基本同じようです。下記記載のリンクからヘルパーのファイルにたどり着かなかったので、再度投稿します。
http://endoyuta.com/2014/04/28/cakephp-csv%E3%83%98%E3%83%AB%E3%83%91%E3%83%BC/

あと、このプラグインのCsvHelper.phpの28行目が、下記のようになっていて、$rowがありませんエラーが出ていたので、$rowを追加する必要があると思った。

あと、下記コードを書いたら文字化けした。
echo $this->Csv->render(true, ‘sjis’, ‘utf-8’);

cakePHP – Shellでコンポーネントを使う

参考:[CakePHP 2.x] shell(シェル)からComponent(コンポーネント)を呼び出す

cakephpでいつも忘れるやつ

■ボタン押したら、確認ボックスが出て、OKを押したらPOSTアクセスするやつ

cakephp – サブドメインとオリジナルドメインでcookieを有効にする

core.phpで、下記のようにやってみた。できてるっぽい。

cakephp – Migrationsプラグインでエラーになった場合の対処について

Migrationsプラグインは便利なのですが、エラーがでるとわけわからなくなります。一度エラーがでるとMigrationsフィアルが空っぽになったりします。テーブルを削除して、Migrations.migration generate -fとやると、削除したテーブルが存在しないよエラーが出たりします。何なんでしょうか?ただいまこれにより、混乱中です。

Migrationsプラグインは、https://github.com/CakeDC/migrationsにあります。ここにドキュメントもあるので、読んで整理します。

まず、テーブルを削除したときにgenerateするとエラーになるというのは勘弁していただきたいです。
Comparing schema.php to the database…のあとにエラーになります。現在のschema.phpと、現状のDBの状態を比較しようとするときにテーブル自体が存在しないとエラーがでるようです。これを回避する方法はあるのでしょうか?比較しなければいいとは思いますが、その場合、自動的にマイグレーションファイルが作成されることはございません。

-fというのは、モデルがなくても適用したい場合に使うようです。モデルが存在している状態でテーブルを削除するとエラーがでるのかもしれません。テーブルを削除する場合はモデルを削除してからgenerateする必要があるのかもしれません。本当でしょうか?キャッシュが残ってるとモデルが存在するのにテーブルがないのでエラーを出すのかもしれません。今すでにモデルを削除しておりますが、テーブルがないよエラーが出ていたのですが、キャッシュを削除するとエラーがでなくなりました。。記載している内容がどこまで正確かわかりませんが、また同じ問題が起こったときの参考に、これを残しておきます。

次に、なんで空っぽのmigrationsファイルが作成されたのでしょうか?これももしかしたらキャッシュの問題なのかもしれません。当然schema.phpを比較している状態だったのですが、空っぽになりました。とりえあず、Migrationファイルを作成するときは、削除するテーブルのモデルも削除し、キャッシュも削除してから作成するのが安全そうだと思いました。-fはモデルの作成が不要なテーブルもマイグレーションで管理したい場合に利用するものになるというのも覚えておけば、混乱が少なくなるかなと思いました。

ちなみに、cake Migrations.migration run resetとやると、テーブル構成が最初の最初に戻りますのでデータ全部消えますので、ご注意ください。

vagrant + chefでcakePHP3の環境をつくる

Vagrantのcentos6.5.3に、php5.6、apache2.2、mysql5.6、phpmyadmin、vim、gitをchefで自動的に入れます。

macにvagrantはインストール済みであるものとします。
chefのknife-soloと、Berkshelfもインストール済みの状態とします。

作成した、Vagrantfile、chef-repoは、下記のgithubにpushしました。
https://github.com/endoyuta/vagrant_contos65_cakephp3/tree/php5.6

php5.6ブランチが、php5.6やphpmyadminがインストールできて、cakephp3をインストールした際に出たエラーなども若干対応したものになります。

まず、~/vagrant/test内に、新たにvagrantを立ち上げます。

$ cd ~/vagrant
$ mkdir test
$ cd test
$ vagrant init

これで~/vagrant/test内に、Vagrantfileが作成されます。

BOXは、下記のCentOSの6.5.3を使います。
https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box

Vagrantfileを編集します。

$ vim Vagrantfile

vagrantを立ち上げます。

$ vagrant up

次にchefのセットをしていきます。
とりあえず、sshのconfigを設定しておきます。

$ vim ~/.ssh/config

chefのリポジトリをつくります。

$ knife solo init chef-repo

chef-soloをvagrantにインストールします。

$ cd chef-repo
$ knife solo prepare 192.168.33.10

次に、Berkshelfを使って、cookbookを作ります。

$ vim Berksfile

cookbookを作成します。

$ berks vendor site-cookbooks

phpと、httpd、phpmyadminについては、berkshelfだと中々上手くいきませんでした。phpは、5.3までならすんなり入りますし、httpdも勝手にインストールされます。httpdとphpmyadminはエラーが続いたのでberkshelfはやめました。代わりに、vargrant+chefでつくるPHP5.5+MySQL5.6+CakePHP3環境を参考に、baseとphp55とphp56というcookbookをつくりました。baseとphp55は参考サイトをほぼそのまま使わせてもらってます。

次に、jsonファイルを編集します。

$ vim nodes/192.168.33.10.json

chefを実行します。

$ knife solo cook 192.168.33.10

■参考
vargrant+chefでつくるPHP5.5+MySQL5.6+CakePHP3環境
Chef-Solo + Berkshelf で Rails 4 の開発環境を構築
chef-solo(knife)でMySQLサーバ5.6をインストールする 2014年度版
cakePHP3にチャレンジ!
https://supermarket.chef.io/
CentOSにPHP5.6をインストール

cakephp – viewでレイアウト変数を変更する

例えば、headerのtitleを変更したい場合、
View/Layouts/default.ctpのtitleタグ内を下記のようにする。

そして、view内に下記を追記すると、サイト名 – ログインというtitleになる。

cakephp1.3 – SSL接続

1.3の場合セキュリティコンポーネントが微妙な挙動をするらしく、使わずにSSL接続や、CSRF対策などをやることが多いらしい。
SSL接続は、SSLコンポーネントというものが便利らしい。

SSL Component

簡単に設定できた。常時SSL接続の場合の設定方法はよくわからないが、本体ソースのssled関数で全部trueを返すようにしたらとりあえずできる。

参考:CakePHPのSSL Componentでhttpとhttpsを切り替える

cakePHP – メール送れない(additionalParameters)

参考:
[CakePHP開発]メールが受信できない時はReturn-Pathを設定してみよう
CakePHPのemailでReturn-Pathを設定する

email.phpの設定で、下記を追加する。

cakePHP2 404エラーが発生したらリダイレクトさせる

参考:CakePHP2.Xで404 Not Foundエラーをリダイレクトする方法

上記のとおりやってるんだけどエラーになる。

$this->controller->redirect(‘/’);にしたらできた。