5

我创建了一个shell脚本如下

<?php

class EmailShell extends AppShell
{
    public function main()
    {
        $this->out('Hello world.');
    }
}

当我在命令行中导航到控制台文件夹并键入cake email时,我收到以下错误。

Error: Shell class EmailShell could not be found.
#0 C:\wamp\www\gitgrow\lib\Cake\Console\ShellDispatcher.php(167): ShellDispatche
r->_getShell('email')
#1 C:\wamp\www\gitgrow\lib\Cake\Console\ShellDispatcher.php(69): ShellDispatcher
->dispatch()
#2 C:\wamp\www\gitgrow\app\Console\cake.php(33): ShellDispatcher::run(Array)
#3 {main}
4

4 回答 4

5

创建一个在控制台中使用的外壳。对于这个例子,我们将创建一个简单的 Hello world shell。在您的应用程序控制台/命令目录中创建 EmailShell.php。将以下代码放入其中:

class EmailShell extends AppShell {
    public function main() {
        $this->out('Hello world.');
    }
}

然后运行这个命令:

Console/cake email

或者

cake email
于 2012-07-19T08:24:02.803 回答
2

运行它C:\wamp\www\gitgrow\app\。它应该工作。

cd C:\wamp\www\gitgrow\app
Console\cake email
于 2012-07-19T08:27:02.283 回答
1

如果您的 shell 类位于正确的位置,那么 cake 不知道您的应用根目录在哪里可能是个问题。您可以使用 -app 参数指定它。

cake -app ../app email
于 2012-07-19T07:41:36.987 回答
1

有关如何在 cron 中运行 Cake shell 的信息,请参阅以下链接:

http://book.cakephp.org/2.0/en/console-and-shells/cron-jobs.html

您的 cron 命令基本上将 cd 调用到 app 目录和 cake 命令一起运行 shell。

于 2013-09-17T19:35:58.970 回答