2

我正在使用drupal 6。

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

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

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

有人知道权限页面用于将结果插入数据库的功能吗?

我的 php 内存限制是 256M。

4

4 回答 4

4

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

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

于 2012-10-31T23:07:36.700 回答
4

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

于 2012-11-14T21:06:37.957 回答
1

改变 db 表的大小?听起来像它的截断。

于 2010-05-31T02:36:22.347 回答
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();
}
于 2010-06-17T03:29:55.963 回答