2012-07-19 7 views
3

J'ai créé un script shell comme suitExécution CakePHP Script Shell

<?php 

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

Quand je navigue au dossier Console dans la ligne de commande et tapez email gâteau je reçois l'erreur suivante.

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} 
+0

voir plus: http://stackoverflow.com/questions/10671634/cakephp-shell-shell-class-helloshell-could-not-be-found/26845978#26845978 –

Répondre

3

créer un shell à utiliser dans la console. Pour cet exemple, nous allons créer un simple shell Hello world. Dans votre application Console/Répertoire de commande créez EmailShell.php. Mettez le code suivant à l'intérieur:

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

Exécutez ensuite cette commande:

Console/cake email 

ou

cake email 
+0

merci cela a fonctionné. maintenant lors de l'exécution d'un travail cron. une idée quelle commande je dois exécuter pour ce script? –

+0

Voir ma réponse ci-dessous ou n'est-ce pas assez clair pour vous? – Pyrite

1

Si votre classe shell est au bon endroit, alors il pourrait être un problème que le gâteau ne sait pas où la racine de votre application est. Vous pouvez le spécifier en utilisant l'argument -app.

cake -app ../app email 
+0

Je l'exécute dans le dossier app/Console lui-même –

+0

le chemin a également été mis dans l'environnement Windows –

2

exécuter à C:\wamp\www\gitgrow\app\. Ça devrait marcher.

cd C:\wamp\www\gitgrow\app 
Console\cake email 
+0

Cela a fonctionné mais c'est un choix totalement non intuitif de la part des développeurs de Cake. Je suis sur Windows. Cela fonctionne quand vous êtes dans le dossier '/ app' et que vous exécutez' Console \ cake email'. Mais si vous êtes ** déjà ** dans le dossier 'Console' et que vous exécutez' cake email', cela ne fonctionne pas. C'est juste ridicule! D'autant qu'ils ont ajouté le dossier 'Console' au chemin du système. ?!? – Costa

Questions connexes