読者です 読者をやめる 読者になる 読者になる

cakephp1.2 cake.phpが動かなくてどうしようもなかった件

cakephp

ず――――と前から分からんくて、とうとう切れて適当に調べた件。

Shellを継承したバッチコマンド(batch_name.php)があるとして、
以下を、コマンドラインから実行すれば普通にbatch_name.phpが起動する

/usr/bin/php /var/www/html/test-test.com/cake/console/cake.php batch_name main -app /var/www/html/test-test.com/app

しかし、shファイルから起動すると何故か実行できない。
batch_name.sh

#!/bin/sh
/usr/bin/php /var/www/html/test-test.com/cake/console/cake.php batch_name main -app /var/www/html/test-test.com/app

実行

sh batch_name.sh

エラー内容

Welcome to CakePHP v1.2.3.8166 Console
---------------------------------------------------------------
Current Paths:
 -app: app
 -working: /var/www/html/test-test.com/app
 -root: /var/www/html/test-test.com
 -core: /var/www/html/test-test.com

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:

 ROOT/vendors/shells:
         - none

 CORE/console/libs:
         acl
         api
         bake
         console
         i18n
         schema
         testsuite

To run a command, type 'cake shell_name [args]'
To get help on a specific command, type 'cake shell_name help'

このエラー内容はcakeコマンドを単体で叩いた時と同じメッセージ

cake

しかもファイルによって、起動したりしなかったりする。
「test-test.com」のようにハイフンが含まれているせいかと思ったけど違った。


で、結論を言うと-app以降を削除したことで起動できた。
batch_name.sh

#!/bin/sh
/usr/bin/php /var/www/html/test-test.com/cake/console/cake.php batch_name main

なので今後このエラーが出たら、ひとまず-app以降を削除して実行すること

それによる影響は知らん。動かして判断する。

少しだけ調べたら、shファイル&-appをつけたケースだと、cake.php内で呼ばれている「Configure::read('vendorPaths')」がおかしな値を返していたことだけはわかった。

Array
(
/vendors/> /var/www/html/thebase-shop.com/app
    [1] => /var/www/html/thebase-shop.com/vendors/
)

直接たたいた場合とshファイルから実行した場合でなぜ結果が違うのかは結局分からなかった。
以上。これまでの時間を合わせると相当にはまった。