我刚刚开始使用Cakephp shell并遇到问题。 我的蛋糕核心库位于路径d:/ libs / cake下 我的应用程序是在d:/ servers / htdocs / myapp
下设置的我在d:/ servers / htdocs / myapp / vendor / shells
下编写了一个测试shellclass ReportShell extends Shell {
var $uses = array('Appt');
function main() {
echo $this->Appt->find('first');
}
}
当我尝试从d:/ servers / htdocs / myapp运行此代码时,它给了我一个错误
警告:include_once(d:/servers/htdocs/myapp/config/database.php):无法打开流:d:/ libs / cake \ libs \ mode中没有这样的文件或目录 第23行的l \ connection_manager.php
警告:include_once():在d中打开'd:/servers/htdocs/myapp/config/database.php'以包含(include_path ='。; D:\ work \ xampp \ php \ PEAR')失败:第23行的/libs/cake\libs\model\connection_manager.php
致命错误:ConnectionManager :: getDataSource - 第102行的d:/ libs / cake \ libs \ model \ connection_manager.php中不存在的数据源默认
原因是它试图在'd:/ servers / htdocs / myapp / config /'下找到database.php,正确的路径是'd:/servers/htdocs/myapp/app/config/database.php '
我在这里做错了什么?
感谢
答案 0 :(得分:3)
我的应用程序是在d:/ servers / htdocs / myapp
下设置的
不,应用程序目录(持有config
文件夹)为D:\servers\htdocs\myapp\app\
。
原因是它试图在'd:/ servers / htdocs / myapp / config /'下找到database.php,正确的路径是'd:/servers/htdocs/myapp/app/config/database.php '
您位于错误的目录中,因此无法找到您的数据库配置。
我在d:/ servers / htdocs / myapp / vendor / shells
下编写了一个测试shell
将您的shell从D:\servers\htdocs\myapp\vendors\shells
的全局供应商文件夹移出D:\servers\htdocs\myapp\app\vendors\shells
的应用程序供应商文件夹,然后重试。
(注意:当你有一个设置,其中蛋糕和应用程序目录彼此分开时,我实际上不确定全局供应商文件夹应该在哪里,但是在运行命令时你肯定必须在你的应用程序目录中不是您正在使用的myapp
目录。)
如果您将D:\libs\cake\console\
添加到PATH environment variable(记得以后关闭所有cmd.exe
进程),那么您只需执行以下操作:
D:\servers\htdocs\myapp\app> cake report
(来自应用程序目录中)
否则,您需要输入cake console可执行文件的完整相对或绝对路径和/或为CakePHP提供应用程序目录的绝对路径(如果您不在其中):
D:\servers\htdocs\myapp\app> ..\..\..\..\libs\cake\console\cake report
D:\servers\htdocs\myapp\app> \libs\cake\console\cake report
D:\libs\cake\console> cake -app D:\servers\htdocs\myapp\app report
D:\> libs\cake\console\cake -app D:\servers\htdocs\myapp\app report
等...
希望你能明白为什么只在你的PATH
添加正确的文件夹会让事情变得更轻松。 :)
答案 1 :(得分:2)
尝试在/app
目录或指定的-app
参数中运行它:
cake -app d:/servers/htdocs/myapp/app report
答案 2 :(得分:1)
感谢。这是问题所在 我的shell脚本在/ myapp / vendor / shells下是错误的。它应该在/ myapp / app / vendor / shells下。我移动文件后,它工作。谢谢
答案 3 :(得分:1)
您应该始终在APP路径中执行蛋糕控制台。
您的Shell文件应位于..app / Console / Command /
如果您的文件名是TestShell.php,请输入命令app>蛋糕测试