用户权限的更改不保存

时间:2010-05-31 02:24:58

标签: drupal drupal-6 drupal-modules

我使用drupal 6。

似乎权限页面无法保存太多设置。

我已尝试保存权限设置,但它不会保存到数据库中。 我发现这是由于“太多的领域”。 (使用内容权限模块)。 如果我取消选中某些字段,然后检查较小字段,则会保存权限。

例如,如果我取消选中2个复选框,然后选中一个复选框,则会保存权限。

是否有人知道权限页面用于将结果插入db?

的功能

我的php内存限制是256M。

4 个答案:

答案 0 :(得分:4)

您需要在php.ini中调整max_input_vars。通常的默认值是1000,但是有很多模块,Drupal权限页面很容易让人眼花缭乱。如果你有权访问php.ini并重新启动apache,只需添加另一个零并使其为10000。 php.ini文件的位置取决于您的服务器配置。

我遇到了同样的问题,错误日志中没有错误,这为我解决了这个问题。

答案 1 :(得分:4)

您对此处遇到的问题有一个很好的解释:http://2bits.com/drupal/drupal-not-saving-admin-pages-large-number-input-fields.html

答案 2 :(得分:1)

更改db表的大小?听起来像是截断了。

答案 3 :(得分:0)

保存数据库权限的功能是user_admin_perm_submit()

function user_admin_perm_submit($form, &$form_state) {
  // Save permissions:
  $result = db_query('SELECT * FROM {role}');
  while ($role = db_fetch_object($result)) {
    if (isset($form_state['values'][$role->rid])) {
      // Delete, so if we clear every checkbox we reset that role;
      // otherwise permissions are active and denied everywhere.
      db_query('DELETE FROM {permission} WHERE rid = %d', $role->rid);
      $form_state['values'][$role->rid] = array_filter($form_state['values'][$role->rid]);
      if (count($form_state['values'][$role->rid])) {
        db_query("INSERT INTO {permission} (rid, perm) VALUES (%d, '%s')", $role->rid, implode(', ', array_keys($form_state['values'][$role->rid])));
      }
    }
  }

  drupal_set_message(t('The changes have been saved.'));

  // Clear the cached pages
  cache_clear_all();
}