cakephp1.2 cake.phpが動かなくてどうしようもなかった件
ず――――と前から分からんくて、とうとう切れて適当に調べた件。
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ファイルから実行した場合でなぜ結果が違うのかは結局分からなかった。
以上。これまでの時間を合わせると相当にはまった。