IT家・挑戦雑記

情報を制する者は世界を制す!

WordPressを利用していると
このページにアクセスするための十分なアクセス権がありません
と怒られてしまうケースがあります。

私の場合、システムログイン後にこのメッセージが出ました。

その状況や原因を以下にて解説します。

━━━━━━━━━━━━━━━━━━━━━━━━━
★状況
 ・テーブルのprefix名を変更

 DBテーブルとwp-config.phpのprefix名を変更した際、
 WordPressで管理画面にIDとパスワードを入力してログイン後、
 「このページにアクセスするための十分なアクセス権がありません」
 とうい警告メッセージが表示される。
 ※管理画面で操作不可
 ※ブログ閲覧は問題なし

★環境
 ◆サーバーサイド
  ・OS:CentOS 5.5
   ・PHP:5.3.3
    ・WordPress 3.01
   ・Apache:2.2.3
   ・MySQL:5.1.50-1

 ◆WordPressのテーブル一覧(全11テーブル)
  1: (prefix名)_commentmeta
  2: (prefix名)_comments
  3: (prefix名)_links
  4: (prefix名)_options
  5: (prefix名)_postmeta
  6: (prefix名)_posts
  7: (prefix名)_terms
  8: (prefix名)_term_relationships
  9: (prefix名)_term_taxonomy
  10: (prefix名)_usermeta
  11: (prefix名)_users
  ※(prefix名) ・・・ ユーザ指定のprefix名

★原因
 ・DBのテーブルprefixの変更が不十分

★解決
 テーブルprefix名を変更する際には、
  ・DBのテーブルprefix名を変更
  ・wp-config.phpのprefix名を変更
  ・以下の2テーブル内に存在するprefix名を変更
   1.(prefix名)_usermeta ・・・ フィールド:meta_key
   2.(prefix名)_options ・・・ フィールド:option_name

★状況
 WordPressで記事を投稿した際に、相手サイトにトラックバックができない。

★環境
 ◆サーバーサイド
  ・OS:CentOS 5.5
   ・PHP:5.3.2
    ・WordPress 3.0
   ・Apache:2.2.3

★原因
 ◆トラックバックの際のタイムアウト(時間制限)
  ・デフォルトでタイムアウトが0.01秒と短めに設定されている。
  ・重たいサーバーの場合、トラックバックに失敗する可能性が高くなる!

★解決
 ◆以下のphpを書き換える
  ■対象php
   /wp-includes/cron.php
  
  ■対象箇所
   「cron.php」の234行目付近
    ▲修正前
     wp_remote_post( $cron_url, array(‘timeout’ => 0.01, ‘blocking’ => false, ‘sslverify’ => apply_filters(‘https_local_ssl_verify’, true)) );
    
    ▲修正後
     wp_remote_post( $cron_url, array(‘timeout’ => 3, ‘blocking’ => false, ‘sslverify’ => apply_filters(‘https_local_ssl_verify’, true)) );
     ※本修正は0.01秒から3秒に修正。