CakePHP控制台通过Cron问题

我正在使用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。

Solutions Collecting From Web of "CakePHP控制台通过Cron问题"

我已经设法在Windows上使用版本1.2.2.81201.2.3.8166重现此问题。 -app参数似乎并不像预期的那样工作。

控制台将仅列出/vendors/shells文件夹中的全局shell,而不是位于/app/vendors/shells或插件( /app/plugins/plugin_name/vendors/shells )中的特定/app/vendors/shells

-app参数在OpenSUSE上按预期工作,列出所有可用的特定于应用程序的shell(包括插件中的那些)。

除非我们做错了什么,否则在Trac上打开关于这个问题的票据可能是值得的。

解决方法是将您的Cake console目录添加到Windows PATH环境变量。

  1. 打开“系统属性”( Start键+ Pause/Break键)
  2. 打开“高级”选项卡
  3. 点击“环境变量”
  4. 在“系统变量”部分选择PATH变量
  5. 按“编辑”
  6. 将“ ;E:\web\elink\cake\console\ ”附加到“变量值”
  7. 在所有对话框上按“OK”
  8. 关闭所有打开的cmd提示

然后,您可以设置pycron运行E:\web\elink\cake而不带-app参数,并且所有特定于应用程序的shell都应该可用。

对于有相同问题但在Linux系统上的人,这里有一个简单的解决方案:

http://book.cakephp.org/complete/3/The-Manual#Running-Shells-as-cronjobs-846

– 对于任何系统的另一种替代解决方案是创建一个简单的脚本,如下所示:

 cd /path/to/app /path/to/cake 

这两种解决方案在Cent0S和基于MacOS的机器上为我工作。