CakePHP Cake Bake“未找到数据库配置”

时间:2013-02-03 12:27:31

标签: cakephp cakephp-1.3

我正在开发一个传统的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.

  6. 我不明白,因为在〜/ 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行

    但无论如何,它应该找到现有的数据库连接细节,因此不确定发生了什么。

3 个答案:

答案 0 :(得分:1)

对于使用 cake bake 之类的控制台命令,您必须使用操作系统终端(对于Linux)/命令提示符(对于Windows)。因此,您必须在控制台中执行步骤2和3 中提到的步骤。您可以阅读documentation here以了解如何使用控制台命令。

然后,确保您拥有 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'      => ''
);

答案 1 :(得分: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;

这一行:     配置( '数据库');

只包括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的两个问题可能会导致您的错误;

  1. 未找到app / config / database.php
  2. 您可以尝试检查这是否输出正确的路径:

    die(CONFIGS . 'database.php');
    
    1. 您的app / config / database.php中存在错误,导致DATABASE_CONFIG类格式错误且无法初始化
    2. 通知 显然你正在为所有运行'烘焙',包括设置新的数据库配置。这可能会覆盖你的 现有数据库配置。可以仅烘焙应用程序的一部分(例如仅烘烤控制器或模型)。 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真的已经过时了,虽然它仍然可以正常运行,但我不会在1.3中投入太多时间作为很多CakePHP 2.x中的情况发生了变化。最好从CakePHP 2.x开始,然后从1.3开始,学习CakePHP 2中不再有用的东西。

答案 2 :(得分:0)

app/Config文件夹复制到app/Console,最终路径为app/Console/Config。这对我有用。