【问题标题】:Cron job failed using CodeIgniter in Google Appengine在 Google Appengine 中使用 CodeIgniter 的 Cron 作业失败
【发布时间】:2015-11-27 20:44:38
【问题描述】:

在 Google App Engine 中使用 PHP 框架,当我使用带有 login:required 的 index.php 网址时,Cron 作业失败。我将login:admin 用于cron。

参考我的 app.yaml 文件

app.yaml

application: my-app
version: 1
runtime: php55
api_version: 1


- url: /.*
  script: index.php
  login: required

- url: /backup_cron/remindermail
  static_dir: backup_cron/remindermail
  login: admin

我不想在我的 index.php 加载中使用 no loginlogin: admin

我的应用只能看到所有使用 Gmail 登录的用户。没有登录 cron 作业工作正常。

是否可以在第一个加载页面使用 login:required ?

login:required

日志详情:

HTTP/1.1" 302

请求失败,因为 URL 需要用户登录。对于调用的请求 在 App Engine 内(离线请求,如任务队列,或 webhook,如 XMPP 和传入邮件),URL 必须需要管理员登录(或不需要 登录)。

no loginnd login:admin

日志详情:

HTTP/1.1" 200

成功

【问题讨论】:

  • 您是否在没有登录的情况下在index.php 上测试了 cron?还是login: admin?另外,日志是怎么说的?
  • 感谢您回复 MeLight。我在帖子中更新了日志详细信息。请查看
  • 登录设置为'login:admin'时无法运行cron作业?
  • sry,当登录设置为'login:admin'时登录成功

标签: php codeigniter google-app-engine cron


【解决方案1】:

Cron 无法访问受login: required 保护的 url,因为它们不是以用户身份运行的。 来自文档:

注意:虽然 cron 作业可以使用受 login: admin 限制的 URL 路径,但它们不能使用受 login: required 限制的 URL 路径,因为 cron 计划任务不会以任何用户身份运行。通过包含如下所述的 X-Appengine-Cron 标头来满足管理员限制。

链接:https://cloud.google.com/appengine/docs/python/config/cron?hl=en#Python_app_yaml_Securing_URLs_for_cron

话虽如此,我建议您为所有受保护的作业使用特定的处理程序。或者您可以重定向未登录的用户。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    • 2011-04-11
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多