drupal - 在 Drupal 6 中以管理员权限运行 hook_cron

标签 drupal drupal-6

有没有办法允许 hook_cron 以管理员权限运行——例如某种 sudo hook_cron()

此问题是 my earlier question 的后续问题尝试诊断为什么 /drupal/cron.php 调用的 hook_cron() 函数与 /admin/reports/status/run-cron 调用的相同函数的运行方式不同。

我的特定函数(称为 foo_cron())会更新用户配置文件,作为其夜间职责的一部分。但是,/drupal/cron.php 显然是作为匿名用户运行的。由于显而易见的原因,匿名用户无法修改此站点中的用户配置文件字段,因此这部分脚本失败。

我知道我可以通过直接使用 SQL 修改 profile_fields 来解决这个问题,但这感觉像是一个丑陋的黑客,并且如果我开始在多个模块中执行此操作,则可能很难维护。

在现有的 Drupal 函数和框架内,是否有一种方法可以使某些 foo_cron() 作业使用我们通常只提供给管理员的权限运行,例如更新配置文件?

此特定站点正在运行 Drupal 6.1.3。

最佳答案

来自drupal cron manual page : 以经过身份验证的用户身份运行 cron

#!/bin/sh
# Reference http://drupal.org/node/479948#comment-1673488 by pearlbear

SITE=https://dev.example.com/
USERNAME=user.name
PASS=ChangeMe!!12

COOKIES=/tmp/cron-cookies.txt
WGETPARAMS="--quiet -O /dev/null --no-check-certificate --save-cookies $COOKIES --keep-session-cookies --load-cookies $COOKIES"
# if you run drupal in a default language different than English you need to modify this
LOGIN="Log%20in"

wget $WGETPARAMS "${SITE}user"
wget $WGETPARAMS --post-data="name=$USERNAME&pass=$PASS&op=$LOGIN&form_id=user_login" "${SITE}user"
wget $WGETPARAMS " ${SITE}cron.php"

关于drupal - 在 Drupal 6 中以管理员权限运行 hook_cron,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1239118/

相关文章:

php - 自动完成以及文本字段的拼写检查和复数检查

带有谷歌地图的 JQuery FancyBox

mysql - Drupal : Nodes not getting created for uploaded images. 给出 "user warning: Duplicate entry"错误

php - 如何在每个请求的根 URL 后添加一个单词?

html - 如何从 drupal 模块输出 HTML 的好方法

drupal - 我可以在Drupal中截断 session 和看门狗表吗?

drupal - Drupal 7 分类术语的批量更新

javascript - 如何在 AngularJs 中将 <input file> 编码为 base64?

php - Drupal 8.5.1 升级错误 - 在哪里查找故障排除?

php - 如何在 Drupal 中使用 PHP 分配角色?