ようこそゲストさん

CPA-LABテクニカル

2008/02/05(火) CakePHP追加コントローラー。ローカルはOK、でもレンタルサーバーでNG。の現象解明

はてブ情報 はてブに登録 はてブ数 cakephpspok
CakePHP1.2bで題名の通り、追加したモデル&コントローラーで不具合?が。ローカルの環境では全く問題なく動くのに、リモートのレンタルサーバーにアップロード後に試すと、なぜかこんなエラーが。
Error: The requested address '' was not found on this server.
ずいぶん悩んで時間がかかったけど、なんのことはない。
layout指定の最初の文字を大文字にしていました。。。。 (& デバッグモードdebug 0 の時)
  • var $layout= 'infl…';
とすべきところ
  • var $layout= 'Infl…';
としていました。。。


はい、私が悪いです。


確かにウィンドウズ(windows)環境では、大文字小文字を区別しませんでしたね。。。そんなの忘れてたし、まさかこんなことでつまずくなんて。。。。だから、CamelCaseとか複数形とか大嫌いだ。
ローカルはウィンドウズ、リモートはunix/linux系という人は多いかと思うので、覚書。


リモートは、Configure::write('debug', 0);にしているので、こうなったわけですな。
ここでデバックモードを1以上にすると以下のエラーがでて、間違いに気づきます。

Error: The layout file /home/hogehoge/hoge/cake/hoge/app/views/layouts/Inf….ctp can not be found or does not exist.

リモートで、あれっという現象にであったら、とりあえずデバッグモードを1にしてみると手がかりあるかも。


なお、アメリカのgoogleディスカッションをみると、似たような現象で、新たにアップしたモデルなどが動作しない場合は、キャッシュをクリアすると動いた事例もあるようです。お試しあれ。


cake1.2bのお話。

名前:  非公開コメント   

  • TB-URL  http://www.cpa-lab.com/tech/058/tb/

CakePHP規約ワードメーカー WordMaker for CakePHP Conventions

はてブ情報 はてブに登録 はてブ数 cakephpspok
CakePHPには、データベースのテーブル名や、クラス名、ファイル名に「規約」がさだめられています。CakePHP規約

しかし日本人にとっては、複数形だの、CamelCase*1など、全然なじみがありません。私なんぞ、womanの複数形をwomansにしてしまうような英語オンチです*2


なので、サイト構築しながら、命名にものすごく悩むわけです。プログラミングしながら、とてもよく間違えるわけです。
なので、それをサポートするページを作りました。私自身が必要なものです。


CakePHP 規約ワードメーカー WordMaker for CakePHP Conventions


これで、作りたい単語を入力すれば、テーブル名からクラス名から、自動的に作ってくれます。
もちろんCakePHPのinflector(語尾変化)クラスを使っていますので、Cakeウェイです。


ただ、これを作ったおかげで、CakePHPの単語変化にちょっとおかしな部分をみつけました。日本人からみておかしいだけで、英語圏の人にとっては普通なのかもしれません。また時間のあるときに書きたいと思います。


おまけですが、AJAXも勉強したかったので、AJAX化してあります。若干レスポンスが悪いかもしれませんが、ご容赦を。というか私以外には要のないサイトかもしれない。
CakeのAjaxヘルパーは優秀ですな~。あっというまにAjaxになっちゃったよ。
Javascriptなんて、全然知らないのに。


さらについでに、「この単語じゃないですか?」というsujestsuggest機能をつけました。アメリカyahoo.comのAPIを使用させていただいております。
こことリアルタイムで通信するので、若干レスポンスが重たいです。
しかし、もうちょっとたくさんのサジェストをしてくれるといいのだけれど、かなり字数を打ち込まないと、「~じゃないですか」がでてこない。
もっといい辞書APIをご存じの方がいれば、ぜひお教え下さい。

*1 : 英単語の最初の一文字が大文字で、残りは小文字の書き方

*2 : ただ単に頭が悪いというつっこみはしないで

1: gmataw 2010年01月31日(日) 深夜1時23分

最近CakePHPを勉強し始めて、いろいろGoogleで調べていたら「規約ワードメーカー」にたどり着きました。
便利に使わせてもらっています。
ありがとう!

2: Avenir 2010年05月05日(水) 午後2時11分

CakePHPをはじめたばかりなので、本当に助かります。

ちなみに、CakePHP 1.3.0では仕様変更があったみたいです。
「Information」の複数形は「Information」なのですが・・・
テーブルを「Information」で作ったらbakeで怒られました。

どうやら、テーブルを「Informations」で作らないとダメみたいです。
テーブルを「Informations」にしたらbakeが問題なく出来ました。

実際の動きも問題ないですので、大丈夫かと思います。

なお、コントローラーやビューも「Informations」で生成されました。
他の単語は確認していませんが、変更されている可能性がありそうです。

3: panlong_dragons 2012年02月17日(金) 午後5時38分

ありがたく利用しております。
今さらながら、ビューファイル名は「アクション名.ctp」かもしれませんよね~

4: もぎゃ 2013年04月23日(火) 午後11時34分

モデルのファイル名ってUpperCamelCase,singleじゃなかったでしたっけ?
たとえばこの例だとIngredient.phpになってますよね。
http://book.cakephp.org/2.0/ja/models.html


名前:  非公開コメント