今まであまり意識したことなかったんですけど、ホームページのアドレスって一番最後にスラッシュ『/』がついている場合とついていない場合があるじゃないですか。
両者に違いなんてない、ていうか別に一番最後にスラッシュをつける意味なんてないんじゃないのとか思ってたんですけど、そんなことはなかったんですね。
末尾にスラッシュをつけるのは、それがディレクトリであるという認識になるみたいですね。だから例えばblogというディレクトリの下にindex.htmlというファイルがある場合、上記のように・・・blog/と書くことで、サーバ側も「ああ、このblogはディレクトリだな。じゃあその下にあるindex.htmlでも読み込みに行ってやるか、しゃあねえ」みたいなことになるわけですね。
いやはや、自分でプログラムを作って動かす側に回ると、いろんなことに気づかされますね。ただ適当にネットサーフィンしてニコニコ動画を見ていれば良かった頃なんて、スラッシュに何の注意も払わなかったのに。
新しいプロジェクトをやるたびについつい忘れちゃうので、次こそは忘れないぞという思いを込めてメモ。
プログラムができた~と思ってサーバー上でテストなどをしてみると、僕の場合、必ず最初にSecurity.Saltがどうたらこうたらというエラーが出てしまう。これはapp/config/の中にあるcore.phpというファイルを見ると分かるのですが、150行目くらいにこんなことが書いてある。
まあ、実をいうとこれが何のことだかあまりよく理解はしていないのだけど、要はこの値をユニークなものに変えやがれよこのやろうってなことをエラーは言っているわけですね。
というわけで、このDYなんちゃらかんちゃらってやつを適当なものに変えればOKと。
このSecurity.Saltというやつですが、サーバで運用とかしているものにまた別の値に変えちゃったりすると何やらとんでもないことになるらしいので、注意が必要だそうです。
こういう書き方をすると、elementsの中にあるテンプレートをレンダリングしてくれる。
今日、ポップアップウインドウでカレンダーを表示させる機能を作っていたんですけど、カレンダーのテンプレートはどのページから呼んでも同じだから、こんなようなことができないかなと思って調べてみたら、やっぱりありました。そりゃあるよね。これくらいの機能なら。
別に分かりにくい機能とかではないけれど、これから先もきっとこいつの出番は来るし、最近老化が著しい我が頭脳だとそのときにうっかり忘れている可能性もあるので、メモ。
通常、DBの設計の際には、照合順序をUTF-8にしておけば何の問題もないと思っていたのだが、CPIというレンタルサーバのDBを扱う際、照合順序も全部ちゃんとUTF-8にしているのに、文字化けが直らないという問題が発生した。原因が全く分からずに、かなりの時間、悪戦苦闘した。正確にいうと、悪戦苦闘していたのは僕じゃなくて先輩プログラマーのヅヤさんがですけど。
で、原因を調べているうちに我流天性さんというサイトに行き当たり、その解決法も書いてあったので参考にさせてもらった。
どうやらあそこは、文字コードのデフォルトの設定がEUC-JPになっているようなので、これをUTF-8に直す必要があるらしい。
それにはまず、CPIのコントロールパネルにあるお客様情報のPHP iniの設定情報の中から、自分の使っているPHPのバージョンと同じphp.iniの情報を表示させ、それをまるごとテキストエディタにコピーする。コピーしたテキストを追っていくとのず~っと下の方に(1170行目あたりかな)こんなようなことが書いてある部分がある。
これを以下のように書き換える。
これをphp.iniという名前で保存して、FTPでアップロードする。場所は我流天性さんに倣って、secureというディレクトリの中に一つ適当なディレクトリを作成して、そこにアップ。
アップできたら、今度は.htaccessというファイルを作成して、以下の文を書く。
[source]
suPHP_ConfigPath /usr/home/ユーザーID/secure/作成したディレクトリ/
[/source]
CakePHPを使っている場合は、webrootディレクトリの中にすでに.htaccessがあるので、そこにでも書き加えてやればいい。
・・・と、こんな感じで文字化け解消の手続きをしたわけなんですが、しかし僕の場合は一向に文字化けが解決しなかった。もともとCPIとかいうレンタルサーバのことはよく分からない上、これ以上の解決策も全く知らなかったので、悪戦苦闘する以外にはどうにもならなかった。
そして最終的に出た結論。
CakePHPではデータベースへの接続を行う際、database.phpにいろいろと書くわけですが
このencodingの部分。一見何の問題もないように見えるけど、実はハイフンを入れて書くのはNGらしい。正しくはutf8と表記しなければならない。初めて知ったよ、そんなこと。
ここを直したら、文字化けも無事に解消しました。でもそのかわりにヅヤ先輩の仕事時間を大幅に奪ってしまいました。さーせん。
しかし、今まではutf-8と書いても文字化けせずに普通に動作していたのだけど、それはどうしてなんだろう。
つい先日、フォームヘルパーを使ってチェックボックスを作ったのだけど、どうやらlabelの指定ができないっぽく、書き方としてはこんな感じになってしまった。
なので、ラジオボタンも同じ感じなのかなぁと思っていたら、実はそんなことなかったんですね。
みたいに書けば、勝手にlabelを吐き出してくれるようだ。’value’ => ‘1′ってのは、初期状態ではvalueが1のボタン(上記の例でいうとoption1)にチェックをつけるようにしている。
自分の中ではチェックボックスとラジオボタンは選択できる数が一つか複数かくらいの違いしかなく、あとの書き方は全て同じようにできているとばかり思っていたから、これはちょい盲点だった。