1

私はレガシーの CakePHP 1.3 アプリに取り組んでおり、PHP で長年の経験がありますが、まだ CakePHP に慣れていません。Jamie Munro のRapid Application Development with CakePHPの第 4 章「ベーカリーの使用方法」に従っていますが、彼が提案する手順は、私が期待するようにも進んでいないようです。

これを説明するには、関連する手順を実行するのが良い方法だと思います。

  1. 前の章で概説した本の「Hello World」の例に従って、マシンの次の場所に基本的な CakePHP アプリをセットアップしました: /home/public_html/helloworld.local。以下にアクセスすると、ローカル マシンの Web ブラウザーで「Hello World」の例を確認できます。http://helloworld.local/users/add

  2. 第 4 章では、次のディレクトリに移動することを提案しています。home/public_html/helloworld.local/cake/console

  3. 次に実行します:./cake bake

  4. アプリの場所を入力するように求められ、次を追加します。 /home/public_html/helloworld.local/app

  5. 次に、次のいくつかの選択のデフォルトを選択します。次の行に遭遇するまで問題はありません。 Your database configuration was not found. Take a moment to create one.

~/public_html/helloworld.local/app/config/database.phpに構成されたデータベース ファイルがあるため、これを理解できません。以前に概説した helloworld アプリ (ローカル マシンの で利用可能) にアクセスするhttp://helloworld.local/users/addと、データベース接続が正常に確立され、レコードを挿入できます。

また、ケーキを焼く機会が提供されたときにデータベースの詳細を再入力しようとしましたが、正しい詳細を正常に追加した後、エラーが発生します。

致命的なエラー: クラス 'DATABASE_CONFIG' が /home/public_html/helloworld.local/cake/console/libs/tasks/db_config.php 行 260 に見つかりません

しかし、どちらにしても、既存のデータベース接続の詳細が見つかるはずなので、何が起こっているのかわかりません.

4

3 に答える 3

1

Cake bakeのようなコンソール コマンドを使用するには、オペレーティング システムのターミナル (Linux の場合)/コマンド プロンプト (Windows の場合) を使用する必要があります。そのため、コンソールでステップ 2 と 3に記載されているステップを実行する必要があります。コンソール コマンドの使用方法については、こちらのドキュメントを参照してください。

次に、ファイルhome/public_html/helloworld.local/app/config/database.phpがあることを確認してください。名前から.defaultを削除して、 database.phpに名前を変更してください。データベースを Cakephp プロジェクトにリンクするには、 database.php で認証情報を指定する必要があります

    var $default = array('driver'      => 'mysql',
                     'persistent'  => false,
                     'host'        => 'localhost',
                     'login'       => 'root',
                     'password'    => 'password',
                     'database'    => 'database_name',
                     'prefix'      => ''
);
于 2013-02-03T13:46:26.683 に答える
1

ここで実行中の CakePHP 1.3 インストールは手元にありませんが、これがその場所で起こっていることです:

// @link: https://github.com/cakephp/cakephp/blob/1.3/cake/console/libs/tasks/db_config.php#L260
config('database');
$db = new $this->databaseClassName; // i.o.w. $db = new DATABASE_CONFIG;

この行: config('database');

database.php 構成ファイルをインクルードするだけで、次のように簡素化されます。

include_once(CONFIGS . $arg . '.php'); // i.o.w. include_once(CONFIGS . 'database.php');

( https://github.com/cakephp/cakephp/blob/1.3/cake/basics.php#L77 )

そのため、IMO の 2 つの問題がエラーを引き起こす可能性があります。

  1. app/config/database.php が見つかりませんでした

これが正しいパスを出力するかどうかを確認することができます:

die(CONFIGS . 'database.php');
  1. app/config/database.php にエラーがあり、DATABASE_CONFIG クラスの形式が正しくなく、初期化できません

お知らせ明らかに、新しいデータベース構成のセットアップを含むすべて の実行中の「ベイク」です。これにより、既存のデータベース構成が上書きされる場合があります。アプリケーションの一部のみをベイクすることができます (例: コントローラーのみまたはモデルをベイクする)。CakePHP 1.3 でのベーキングに関するマニュアルは次の場所にあります: http://book.cakephp.org/1.3/en/The-Manual/Core-Console-Applications/Code-Generation-with-Bake.html

これ が初めての CakePHP プロジェクトである場合は、CakePHP 2.x にアップグレードするオプションを本当に検討する必要があります. CakePHP 1.3 は本当に時代遅れです.多くのことが CakePHP 2.x で変更されました。おそらく、CakePHP 2.x から始めてから 1.3 から始めて、CakePHP 2 では機能しなくなったことを学ぶ方がよいでしょう。

于 2013-02-03T14:03:14.100 に答える