1

我正在开发一个遗留的 CakePHP 1.3 应用程序,虽然我有多年的 PHP 经验,但我仍在使用 CakePHP。我正在关注 Jamie Munro 的使用 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)时,有一个数据库连接成功建立,可以插入记录。

当有机会通过蛋糕烘烤时,我也尝试重新输入我的数据库详细信息,但在成功添加正确的详细信息后最终出现错误:

致命错误:在第 260 行的 /home/public_html/helloworld.local/cake/console/libs/tasks/db_config.php 中找不到类 'DATABASE_CONFIG'

但无论哪种方式,它都应该找到现有的数据库连接详细信息,所以不确定发生了什么。

4

3 回答 3

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有两个问题可能会导致你的错误;

  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 的选项确实过时了,虽然它仍然可以正常运行,但我不会在 1.3 上投入太多时间作为CakePHP 2.x 发生了很多变化。最好从 CakePHP 2.x 开始,然后从 1.3 开始,学习那些在 CakePHP 2 中不再适用的东西。

于 2013-02-03T14:03:14.100 回答
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 回答
0

将您的app/Config文件夹复制到app/Console,因此最终路径将是app/Console/Config. 这对我有用。

于 2014-06-23T06:47:44.057 回答