プロが教えるわが家の防犯対策術!

環境 PHP5.3/CakePHP2.5.6


CakePHP2でCronを実行したいため、Shellファイルを作ってコンソールからファイルを叩きましたが、以下のようなエラーが出てしまいます。
PHP Fatal error: Class 'App' not found in /home/me/my/Console/Command/AppleShell.php add_test_data
自分で作ったAppleShell.phpファイルで「AppShell」ファイルが読めていないか、読めていてもエラーが起きているようです。
解決策を教えていただければと思います。


ファイルは以下のように配置してあります。
/home/me/my/Console/Shell.php →CakeのCoreファイルからコピーして配置
/home/me/my/Console/Command/AppShell.php →デフォルトで配置されているファイル。
/home/me/my/Console/Command/AppleShell.php →自分で作成したShellファイル。

「AppleShell.php」ファイルの中身

App::uses('AppShell','/Console/Command'); ※1
class AppleShell extends AppShell {

public $name = 'Apples';
var $uses = array ('Apple');

function add_test_data(){
$data['name']='testApple';
$this->Apple->save($data);
}
}


「AppShell.php」ファイルの中身
App::uses('Shell', 'Console'); ※2
class AppShell extends Shell {

}

ウェブで調べ所、※1の様に「App::uses('AppShell','/Console/Command');」という記載があったので、こちらを記載しました。

AppShellファイルの中で「App::uses('Shell', 'Console');」という記載がありましたが、Consoleディレクトリに「Shell.php」ファイルが無かったのでCakeのCoreファイルからコピーしてきて配置しました。

ファイルのパーミッションは実験用として777に設定してあります。

A 回答 (1件)

コンソールシェルを実行する場合、cakeの引数に渡します。


その環境だと以下ですかね。

/home/me/my/Console/cake apple add_test_data


Shell.phpは修正しないのならCoreから持ってくる必要はありません。
これも不要です↓(AppShellを継承するだけでOK)
App::uses('AppShell','/Console/Command');
    • good
    • 0
この回答へのお礼

tsuyocさん
ご回答ありがとうございます。
無事動かすことができました。
コンソールシェルを使う時にcakeの引数に渡すことがわかっていなかったようです。
ありがとうございました。

お礼日時:2015/02/10 09:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!