2

私はdrupal6を使用しています。

許可ページではあまり多くの設定を保存できないようです。

権限設定を保存しようとしましたが、DBに保存されません。これは「フィールドが多すぎる」ためだとわかりました。(コンテンツ許可モジュールを使用してください)。一部のフィールドのチェックを外してから、より少ないフィールドをチェックすると、権限が保存されます。

たとえば、2つのチェックボックスをオフにしてから1つのチェックボックスをオンにすると、権限が保存されます。

パーミッションページが結果をdbに挿入するために使用した関数を知っている人はいますか?

私のphpメモリ制限は256Mです。

4

4 に答える 4

4

php.iniのmax_input_varsを調整する必要があります。通常のデフォルトは1000ですが、モジュールが多いため、Drupalのアクセス許可ページはこれを簡単に覆い隠します。php.iniにアクセスしてapacheを再起動する場合は、ゼロをもう1つ追加して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 に答える