我正在使用CakePHP控制台从我们下载文件并在数据库中处理。我正在“app”目录中运行控制台。但是,当我尝试在应用程序外部运行控制台并且只为我的cron作业设置“-app”参数时,它不起作用。
老实说,我使用-app参数没有成功。这就像它根本不起作用。
顺便说一下,我正在使用Windows& Pycron为我的cron工作。
当我尝试从D:\
运行控制台时会发生什么D:\>web\elink\cake\console\cake -app D:\web\elink\app
Welcome to CakePHP v1.2.2.8120 Console
---------------------------------------------------------------
Current Paths:
-app: app
-working: D: -app D:/web/elink/app
-root: D: -app D:/web/elink
-core: D:\web\elink
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:
D:\web\elink\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'
我的shell位于D:\ web \ elink \ app \ vendors \ shells。
答案 0 :(得分:1)
我已设法在Windows上使用版本1.2.2.8120
和1.2.3.8166
重现此问题。 -app
参数似乎根本无法正常工作。
控制台只列出/vendors/shells
文件夹中的全局shell,而不是/app/vendors/shells
或插件(/app/plugins/plugin_name/vendors/shells
)中特定于应用程序的shell。
-app
参数在OpenSUSE上按预期工作,列出所有可用的特定于应用程序的shell(包括插件中的shell)。
除非我们做错了事,否则可能需要在Trac上就此问题打开一张票。
解决方法是将Cake console
目录添加到Windows PATH
环境变量中。
Start
键+ Pause/Break
键);E:\web\elink\cake\console\
附加到“变量值”cmd
提示然后,您可以设置pycron
以运行E:\web\elink\cake
而不使用-app
参数,并且所有特定于应用程序的shell都应该可用。
答案 1 :(得分:1)
- 对于那些在Linux系统上遇到同样问题的人来说,这里有一个简单的解决方案:
http://book.cakephp.org/complete/3/The-Manual#Running-Shells-as-cronjobs-846
- 任何系统的另一种替代解决方案是创建一个简单的脚本,其中包含两行:
cd /path/to/app
/path/to/cake
- 两种解决方案都适用于Cent0S和基于MacOS的机器。