CakePHP无法从插件中的shell中找到数据库配置

时间:2013-09-20 20:40:32

标签: php cakephp cakephp-2.0 cakephp-2.3

后台:基本上,我的应用程序有一个插件,里面有一个Shell。此Shell位于插件的控制台>命令文件夹。此shell中的函数旨在从命令行运行。

我的数据库配置文件(database.php)位于应用程序的根配置文件夹中。我在其他几个实例中访问数据库,所以我知道数据库配置没有任何问题。

当我尝试使用任何模型数据检索方法(例如find(...))时,我收到错误:

  

在database.php中找不到数据源配置“default”

这是因为它在Plugin的Config文件夹中查找database.php文件,而不是根目录Config文件夹。这仅在使用Shell时发生,而不是在Controller中发生。

我的问题:在使用Shell时,如何告诉我的插件使用root的database.php文件而不是试图在它自己的Config文件夹中找到它?

重申:插件在从Controller中的模型检索数据时使用根Config / database.php文件,但在从Shell中的模型检索数据时尝试使用自己的Config / database.php文件。 / p>

我尝试过的两件事情会起作用: 1)将database.php移动到Plugin的Config文件夹中; 2)创建一个符号链接。

这两个解决方案似乎都不可接受,因为我不想拥有我的database.php文件的两个副本,并且创建符号链接不是一个很好的解决方案,因为此应用程序可能必须在不同系统之间分发。 / p>

感谢。我应该提一下,这是Cakephp 2.3.6

回答(感谢user221931):您的工作路径需要是应用程序路径,而不是插件路径。您可以使用插件点表示法运行插件shell。像这样:

cake -app /path/to/app Plugin.shellName shellFunction

与我以前错误地做错的方式相反:

cake -app /path/to/app/Plugin/pluginName shellName shellFunction

1 个答案:

答案 0 :(得分:1)

如何使用-app运行插件shell?

  

更改路径:   您的工作路径应与您的应用程序路径相同。要更改路径,请使用'-app'参数。   示例:-app relative / path / to / myapp或-app / absolute / path / to / myapp