Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Drupal';s profile_save_profile不';当由服务器运行时,不能在hook_cron中工作';s克朗_Php_Drupal - Fatal编程技术网

Php Drupal';s profile_save_profile不';当由服务器运行时,不能在hook_cron中工作';s克朗

Php Drupal';s profile_save_profile不';当由服务器运行时,不能在hook_cron中工作';s克朗,php,drupal,Php,Drupal,我对Drupal 6.1.3中的hook\u cron的以下实现有问题 下面的脚本完全按照预期运行:它向新成员发送欢迎信,并更新其个人资料中的隐藏字段,以指定该信已发送。信中没有错误,所有新成员都已入帐,等等 问题在于,当服务器上的“真实”cron调用Drupal cron时,最后一行——更新概要文件——似乎不起作用 当我手动运行cron时(例如通过/admin/reports/status/run cron),配置文件字段会按预期更新 有什么建议可以解释是什么原因造成的吗 (注意,因为有人会建

我对Drupal 6.1.3中的
hook\u cron
的以下实现有问题

下面的脚本完全按照预期运行:它向新成员发送欢迎信,并更新其个人资料中的隐藏字段,以指定该信已发送。信中没有错误,所有新成员都已入帐,等等

问题在于,当服务器上的“真实”cron调用Drupal cron时,最后一行——更新概要文件——似乎不起作用

当我手动运行cron时(例如通过
/admin/reports/status/run cron
),配置文件字段会按预期更新

有什么建议可以解释是什么原因造成的吗

(注意,因为有人会建议:成员通过Drupal之外的方式加入,并且每晚都会上传到Drupal,所以Drupal内置的欢迎信不会起作用(我认为)。)


不完全是随机猜测。。。但是很接近

当“真正的”cron运行代码时,它以特定用户的身份运行代码

类似地,当您手动运行Drupal cron代码时,代码也将作为特定用户运行

我怀疑这两个用户是不同的,拥有不同的权限,这就是导致失败的原因

cron作业的用户有权写入数据库还是只读

cron作业是否生成任何日志文件


更新:上面的“用户”指的是主机服务器上的用户帐户,而不是Drupal帐户。例如,在我用于测试Drupal更改的沙盒系统上,Apache在
noone
帐户下运行。

不是一个完全随机的猜测。。。但是很接近

当“真正的”cron运行代码时,它以特定用户的身份运行代码

类似地,当您手动运行Drupal cron代码时,代码也将作为特定用户运行

我怀疑这两个用户是不同的,拥有不同的权限,这就是导致失败的原因

cron作业的用户有权写入数据库还是只读

cron作业是否生成任何日志文件


更新:上面的“用户”指的是主机服务器上的用户帐户,而不是Drupal帐户。例如,在我用于测试Drupal更改的沙箱系统上,Apache在
noone
帐户下运行。

是的,我确认Drupal cron用户配置文件为“匿名”,因此您必须为“匿名”用户添加管理员用户权限,这在安全性方面不是很好。

是的,我确认Drupal cron用户配置文件为“匿名”“匿名”因此您必须为“匿名”用户添加权限管理器用户,这在安全性方面不是很好。

不检查权限,或者据我所知,执行“全局$user”,因此我不知道这是否是真正的问题

 $new_member = user_load($item->uid);
这看起来是错误的,应该是一个数组而不是uid(除非您使用的是Drupal7),但是如果这不起作用,其余的代码也会失败。

没有检查权限,或者就我所知,执行“global$user”,所以我不知道这是否是真正的问题

 $new_member = user_load($item->uid);
这看起来是错误的,应该使用数组而不是uid(除非您使用的是Drupal7),但是如果这不起作用,其余的代码也会失败。

要安全地切换用户


摘自这里: drupal dot org/node/218104

安全切换用户


摘自这里:
drupal dot org/node/218104

哦,恶心。我似乎是根据你的答案搜索的,这似乎可以解释。感谢你的洞察力。我将发布另一个关于解决该问题的最佳方法的问题。哦,恶心。我似乎是根据你的答案搜索的,这似乎可以解释。感谢你的洞察力。我将在网站上发布另一个问题解决该问题的最佳方法。感谢您的回答--数据库权限不是问题,但我怀疑它们可能是解决方案的一部分。我正在发布另一个问题,关于如何绕过@Houssem引用的限制。感谢您的回答--数据库权限不是问题,但我怀疑它们可能是sol的一部分注意。我正在发布另一个关于如何绕过@Houssem cites.user_load的限制的问题。如果您已经知道用户的UID,则可以使用UID代替数组。如果您无法轻松访问UID,则该数组用于通过其他方式定位用户。请注意,user_load的源代码第6行:if(is_numeric($array)){$array=array('uid'=>$array);}如果您已经知道用户的uid,则用户加载可以使用uid代替数组。如果无法轻松访问uid,则该数组用于通过其他方式定位用户。注意用户加载源上的第6行:if(is_numeric($array)){$array=array('uid'=>$array);}谢谢!我有同样的问题。谢谢!我有同样的问题。
<?php
global $user;
$original_user = $user;
session_save_session(FALSE); // D7: use drupal_save_session(FALSE);
$user = user_load(array('uid' => 1)); // D7: use user_load(1);

// Take your action here where you pretend to be the user with UID = 1 (typically the admin user on a site)
// If your code fails, it's not a problem because the session will not be saved
$user = $original_user;
session_save_session(TRUE); // // D7: use drupal_save_session(TRUE);

// From here on the $user is back to normal so it's OK for the session to be saved
?>