質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

2回答

1678閲覧

CakePHP2.5.8 でうまくいかないところがあります

tuvalu

総合スコア136

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2017/09/09 06:29

いつもお世話になっております。
急にCakePHPを学ばなければならなくなりました。バージョンは、2.5.8とのことです。
早速本家ホームページの入門を読ませてもらっておりますが、CakePHP のコンソール¶
https://book.cakephp.org/2.0/ja/console-and-shells.html
のところでつまずいています。
.bashrc にアプリのパスを登録した上で、書いてある通りに、シェルの作成¶
https://book.cakephp.org/2.0/ja/console-and-shells.html#id2
しましたが(以下)、

お使いのアプリケーションの Console/Command ディレクトリで HelloShell.php を作ってください。その中に以下のコードを書きます。
class HelloShell extends AppShell {
public function main() {
$this->out('Hello world.');
}
}

入門通りにシェルを用意し、Console/cake hello を実行しても
Hello world. とは表示されず、
Error: Shell class HelloShell could not be found.
0 /var/www/html/blog/lib/Cake/Console/ShellDispatcher.php(200): ShellDispatcher->_getShell('hello')
1 /var/www/html/blog/lib/Cake/Console/ShellDispatcher.php(66): ShellDispatcher->dispatch()
2 /var/www/html/blog/lib/Cake/Console/cake.php(54): ShellDispatcher::run(Array)
3 {main}

が出ます。いろいろネットで調べましたが、パスが違うとの回答ばかりで試しましたが、結果はすべて同じでした。

また、cake を実行したときに、hello も見えていますし、他のシェルはちゃんと使えます。どこを直せばよろしいでしょうか?お分かりの方、おしえていただけますでしょうか?よろしくお願い致します。

# cake

Welcome to CakePHP v2.5.8 Console

App : Console
Path: /var/www/html/blog/app/Console/

Current Paths:

-app: Console
-working: /var/www/html/blog/app/Console
-root: /var/www/html/blog/app
-core: /var/www/html/blog/lib

Changing Paths:

Your working path should be the same as your application path. To change your path use the '-app' param.
Example: -app relative/path/to/myapp or -app /absolute/path/to/myapp

Available Shells:

[CORE] acl, api, bake, command_list, completion, console, hello, i18n, schema, server, test, testsuite, upgrade

To run an app or core command, type cake shell_name [args]
To run a plugin command, type cake Plugin.shell_name [args]
To get help on a specific command, type cake shell_name --help

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

エラーメッセージの内容としては、HelloShell.phpが見つからないというような意味です。
cakeコマンドを実行したときに、呼び出せるシェルの一覧が出るはずなのに出ていないですね。

Linux系のOSだと思いますが、カレントディレクトリのパスは何でしょうか?(コマンドを実行しているディレクトリ)
アプリケーションのフォルダ名は何でしょうか?指定しなければ"app"になりますが、変更していますか?
デフォルトだとして、下記のような感じだと、みたところ
/var/www/html/blog/ がルート
/var/www/html/blog/app アプリ
/var/www/html/blog/lib ライブラリ
だと思いますので

shell

1cd /var/www/html/blog/ 2./app/Console/cake hello

といった感じで起動できるはずです。
公式の説明にもありますが、明示的にパスを指定することもできます。

Shell

1cake -app /var/www/html/blog/app

他の理由としては、実行しているアカウントでソースファイル(HelloShell.php)が読めない設定になっているかもしれません。一応、パーミッションをチェックしてみてください。

投稿2017/09/09 07:00

CodeLab

総合スコア1939

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tuvalu

2017/09/09 09:39

大変詳細なご回答を頂いたにもかかわらず、 情無いことが原因ではずかしい限りです。 パーミッションも大丈夫でした。 ありがとうございます。
guest

0

ベストアンサー

HelloShell.phpにPHP開始タグは記述されていますか?

php

1<?php // ←ここ 2 3class HelloShell extends AppShell { 4 public function main() { 5 $this->out('Hello world.'); 6 } 7}

投稿2017/09/09 06:52

ShoheiTai

総合スコア897

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tuvalu

2017/09/09 09:36

はいってませんでした。。(涙) 表示できました。 ありがとうございます。m__m(おはずかしい。。限りです。)
ShoheiTai

2017/09/09 09:55

ドキュメントに書いてないのでトラップですよねw CakePHPがんばってください!
tuvalu

2017/09/10 08:42

ありがとうございます。 チュートリアルのときは気付いて難なく進めましたが、 今回はどハマりでした。回答頂いて、顔から火が出ました。 助かりました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問