有没有办法允许 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/