后台:基本上,我的应用程序有一个插件,里面有一个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
答案 0 :(得分:1)
如何使用-app
运行插件shell?
更改路径: 您的工作路径应与您的应用程序路径相同。要更改路径,请使用'-app'参数。 示例:-app relative / path / to / myapp或-app / absolute / path / to / myapp