背景:基本上,我的应用程序有一个插件,里面有一个外壳。这个Shell位于插件的控制台中
我的数据库配置文件(database.php)位于应用程序的根配置文件夹中。我在其他几个实例中访问数据库,因此我知道数据库配置没有问题。
当我尝试使用任何模型数据检索方法(如find(…))时,我得到一个错误:
在database.php中找不到数据源配置"默认"
出现这种情况是因为它正在插件的配置文件夹中查找database.php文件,而不是根配置文件夹。这只发生在使用外壳时,而不是在控制器中。
我的问题:当使用Shell时,我如何告诉我的插件使用根的database.php文件,而不是试图在它自己的配置文件夹中找到它?
重申:插件使用根配置/数据库。从控制器中的模型检索数据时使用php文件,但尝试使用其自己的配置/数据库。从Shell中的模型检索数据时的php文件。
有两件事我已经尝试过了:1)移动数据库。php进入插件的配置文件夹,2)创建一个符号链接。
这两种解决方案似乎都不可接受,因为我不想拥有数据库的两个副本。php文件,创建一个符号链接并不是一个很好的解决方案,因为这个应用程序可能必须分布在不同的系统中。
谢谢。我应该提到这是Cakephp 2.3.6
回答(感谢user221931):您的工作路径需要是应用程序路径,而不是插件路径。您可以使用插件点符号运行插件shell。这样地:
cake -app /path/to/app Plugin.shellName shellFunction
与我之前的错误做法相反:
cake -app /path/to/app/Plugin/pluginName shellName shellFunction
使用-app
运行插件shell怎么样?
更改路径:您的工作路径应该与您的应用程序路径相同。要更改路径,请使用'-app'参数。示例:-app相对/路径/到/myapp或-app /absolute/path/to/myapp