FAQ トラブルシューティング

WordPress ユーザーが経験する、最もよくある WordPress のエラーについては、WordPress の一般的なエラーページも参照してください。

  • 白い画面
  • 内部サーバーエラー
  • データベース接続の確立エラー
  • 自動アップグレードの失敗
  • 接続タイムアウト
  • アップグレード後のメンテナンスモード
  • PHP エラーまたは MySQL DB エラー

管理メニューにアクセスできないときに、すべてのプラグインを無効化するには ?

時々、すべてのプラグインを無効化する必要があるにも関わらず、管理画面にアクセスできない場合があります。すべてのプラグインを無効化するには、次の2つの方法があります。

phpMyAdmin を使って、すべてのプラグインを無効化できます。

  1. wp_options テーブルの option_name カラム (フィールド) で active_plugins という行を見つける
  2. option_value フィールドの値を a:0:{} に変更する

FTP またはホスティングサービスのコントロールパネルで提供されているファイルマネージャを使ってプラグインフォルダーをリセットすることもできます。この方法を使えば、プラグインオプションは保持されますが、プラグインを手動で再有効化する必要があります。

  1. FTP またはファイルマネージャーで、wp-contents フォルダー (ディレクトリ) に移動する
  2. FTP またはファイルマネージャーで、”plugins” フォルダーの名前を “plugins.hold” などに変更する
  3. WordPress 管理画面のプラグインページ (/wp-admin/plugins.php) にログインする。これで、プラグインが元の場所に見つからないため、すべて無効になる
  4. FTP またはファイルマネージャーで、”plugins.hold” のフォルダー名を “plugins” に戻す

自動アップグレード後に表示される「現在メンテナンス中のため、しばらくの間ご利用いただけません」のメッセージを消すには ?

WordPress の自動アップグレードの間に、ブログのベースフォルダー (wp-admin フォルダーを含んでいるフォルダー) に .maintenance という名前のファイルが置かれます。そのファイルが存在する場合、訪問者には「現在メンテナンス中のため、しばらくの間ご利用いただけません (“Briefly unavailable for scheduled maintenance. Check back in a minute.”)」というメッセージが表示されます。

このメッセージを表示させないようにするには、FTP やホスティングサービスのファイルマネージャーなどを使って .maintenance ファイルを削除してください。念のため、自動アップグレードは再度実行する必要があります。

「該当する投稿は見つかりませんでした」と表示されるだけで投稿が見えないのはなぜですか ?

ブラウザーのキャッシュと Cookie を削除すれば問題を解決できるかもしれません。また、search.php および index.php テンプレートファイルにエラーがないか確認してください。

参照:

「リファラー送信」関連のエラーメッセージが表示されるのはなぜですか ?

投稿を保存する際にこのメッセージが表示される場合、管理画面 > 設定 > 一般設定 を開き、「WordPress アドレス (URL)」と「サイトアドレス (URL)」の両方に「www」が使われていないことを確認してください。たとえば「http://www.example.com」の代わりに「http://example.com」を使用してください。この情報は https://wordpress.org/support/topic/72235 で最初に報告されました。

参照:

データベーステーブルを空にするには ?

参照:

SQL/DB Error errcode 13 Can’t create/write to file というエラーを解決するには ?

問題: PHP を使用して MySQL にアクセスする際、MySQL 変数 tmpdir が書き込みできないディレクトリに設定されています。

この問題を確認するには MySQL コマンドラインで show variables を実行します。

長いリストが表示されますが、その中に「tmpdir = /somedir/」(ディレクトリ名は異なります) のような行が含まれます。

解決策: 「tmpdir」変数を変更し、書き込み可能なディレクトリを指定します。

手順:

  1. my.cnf」ファイルを探します。*nix システムであれば通常「/etc/」の下です。Windows システムであれば「my.ini」ファイルを探します。
  2. テキストエディタでこのファイルを開き、[mysqld] セクションを探します。
  3. セクションの中で「tmpdir」行を探します。行頭に「#」でコメントアウトされていれば「#」を削除し、「tmpdir = /writable/dir」と書き換えます。ここで「/writable/dir」は書き込み可能なディレクトリです。一般に「/tmp」または「/var/tmp」、「/usr/tmp」を指定します。Windows であれば「C:/Windows/tmp」を指定します。
  4. ファイルを保存します。
  5. MySQL をシャットダウンします。「mysqlshutdown -u -p shutdown」を実行してください。
  6. MySQL を起動します。MySQL ディレクトリに移動し「./bin/safe_mysqld &」を実行します。Linux システムであれば通常 MySQL ディレクトリは「/usr/local」または「/usr/」です。

問題が解決しない場合、システム管理者がいれば上のエラーおよび手順を伝え、修復を依頼してください。

Headers already sent エラーを解決するには ?

詳細: ブラウザ上に次の警告メッセージが表示されます:

Warning: Cannot modify header information – headers already sent by (output started at
(警告: ヘッダー情報を変更できません。ヘッダーは以下で送信されました。以下、ファイル名、行番号が表示される)

原因と解決策:

恐らく開始タグ「<?php」の前、または終了タグ「?>」の後に空白文字、改行、その他の文字が含まれています。一般には「wp-config.php」の中ですが、その他のファイルの場合もあります。エラーメッセージを確認すると、エラーの発生したファイル名が表示されています (以下の「エラーメッセージの解釈」を参照してください)。エラーの発生したファイルを最新のバックアップ、または新規にダウンロードした WordPress 内のファイルで置き換えてください。これが最良の方法になります。ただそれが難しい場合は以下の手順に従ってください。

人間の目に見えないからと言って、PHP からも同様だとは言い切れません。

  1. FTP またはプロバイダの管理パネル付属のファイルマネージャーを使用して、エラーメッセージ内に示されたファイルをダウンロードしてください。
  2. テキストエディタでファイルを開いてください。Microsoft Word 等のワープロソフトは使えません。メモ帳や BBEdit は使えます。
  3. ファイルの先頭<?php であることを確認してください。
  4. ファイルの末尾が PHP の終了タグ「?>」ではないか、または終了タグ「?>」の場合、後続に改行や空白文字がないことを確認してください。
  5. ファイルの保存前に、ファイルのエンコーディングが「UTF-8 BOM」ではなく、単純な「UTF-8」か、または同様の BOM 接尾辞なしのものであることを確認してください。

ファイルの末尾を確認するには次の手順に従ってください。

  1. ? と > の間にカーソルを置いてください。
  2. DELETE キーを押してください。
    • Mac ユーザーへの注意: PC 上の “DELETE” キーはカーソルの右側の文字を削除します。
  3. キーを押し続けてください、
  4. 少なくとも15秒間。
  5. そして > を入力してください。
  6. 他のキーはまったく触らずにファイルを保存してください、
  7. 他のキーを押すとまた問題が発生するかもしれません。
  8. 不要なコードブロックを作成しないでください。単一の PHP ブロック内で記述してください。

間違い:

<?php
あるコード;
?>

<?php
別のコード;
?>

正しい:

<?php
あるコード;

別のコード;
?>

サーバーの元の場所に、編集し保存したファイルをアップロードしてください。

注意: ファイルのエンコーディングも確認してください。BOM 付きの UTF-8 でファイルをエンコードすると、BOM が出力の開始文字とみなされます。


エラーメッセージの解釈:

例えばエラーメッセージが

Warning: Cannot modify header information - headers already sent by (output started at /path/blog/wp-config.php:34) in /path/blog/wp-login.php on line 42

の場合、問題は wp-config.php の34行目で発生しています。wp-login.php の 42行目ではありません。このシナリオで wp-login.php の 42行目は犠牲者です。wp-config.php の34行目の余分な空白文字の影響を受けています。

エラーメッセージが

Warning: Cannot modify header information - headers already sent by (output started at /path/wp-admin/admin-header.php:8) in /path/wp-admin/post.php on line 569

の場合、問題は admin-header.php の8行目で発生しています。post.php の 569行目ではありません。このシナリオで post.php の 569行目は犠牲者です。admin-header.php の8行目の余分な空白文字の影響を受けています。

同じエラーが起きるその他の問題:

関数 wp_redirect() の呼び出しや、ヘッダーまたは任意のコンテンツの送信後にヘッダーリダイレクトを使用しても同じエラーメッセージが表示されます。この場合、リダイレクトが必要であれば代わりに JavaScript リダイレクションを使用してください。

「公開」や「下書きとして保存」ボタンが動作しません。

この問題や同様の問題を解決するにはプラグインを1つずつ無効化して、問題の原因を探します。一般にこの問題は2つ以上のプラグインが、JQuery や他の Java ベースツールなどの同じリソースの使用を試みて発生します。

またブラウザに問題がある場合もあります。まずブラウザのキャッシュを削除してください。手順については各ブラウザのドキュメントを参照してください。

Apple の Safari ブラウザでビジュアルリッチエディターやクイックタグボタンが表示されないのはなぜですか ?

旧版の Safari ブラウザは一部の機能に対応していません。最新版にアップグレードしてください。

パスワードリセットのメールが届きません。

詳細: ユーザーがユーザー名やメールアドレスを指定してブログに登録したりパスワードを変更したところ、メールでパスワードが送信された旨の通知がありましたが、メールが届きません。

原因と解決策: WordPress は通常の PHP mail() 関数を使用し、mail() は sendmail を使用します。アカウント情報は必要ありません。一般にホスティングサービスを使用している場合、これは問題になりませんが、個別にサーバーを立てていて SMTP サーバーがない場合、メールは送信されません。*NIX を使用している場合、サーバー上に postfix または sendmail が必要です。ネットで手順を検索しセットアップしてください。*NIX 環境で完全なメールサーバーを構築したくなければ ssmtp が便利でしょう。「システムからメールハブにメールを送信する安全で効果的で単純な方法」だそうです。Windows 環境では Glob SendMail などの sendmail エミュレータを試してください。

より詳細な情報については WordPress サポートフォーラムの次のスレッドを参照してください。https://wordpress.org/support/topic.php?id=24981

Windows ホスティングサーバー固有の情報: SMTP 仮想サーバーの「Relay」設定を確認し 127.0.0.1 のアクセスを許可してください。次に「php.ini」ファイル内で SMTP を同じ IP アドレスに設定してください。また smtp_port を25に設定します。

返信用アドレスの確認: デフォルトで WordPress のメイラーは From: フィールドを「wordpress@yourdomain.com」、From: の名前を「WordPress」とします。

これが正しいメールアドレスであれば OK です。たとえば本当のメールアドレスが「wordpress@yourdomain.com」で、ホストがメールを送信するとします。この場合、「yourdomain.com」でメールを送受信するよう設定していれば恐らく「wordpress」が正しいメールアカウントでなくても送信されるはずです。しかし From: アドレスに本当のメールアドレス、例えば「wpgod@gmail.com」を設定すると、「gmail.com はメールサーバーで処理可能なドメインでないため、メールが送信されない場合があります。

迷惑メールとして処理された: メールが迷惑メールフォルダ―に仕分けされたか、最悪の場合、害を与えるメールとして単純に削除されたのかもしれません。メールは正当であり、宛先に送信すべきであることを受け取り側メールサーバーに伝えるには、次のような方法があります。

SPF: (Sender Policy Framework) もっともよく使用されている迷惑メール対策システムです。ホストコンピュータから使用中のメールサーバーに対して SPF が設定されているかどうかを確認できます。WordPress から自身にメールを送り、メッセージが SPF のチェックをパスした証拠をメッセージヘッダーの中に確認してください。ログインページの「パスワードをお忘れですか ?」リンクに従うとメッセージを受信できます。今のパスワードを変えたくなければ、メッセージ内のリンクをクリックしないでください。

メールが SPF のチェックに失敗している場合、DNS レコードへのアクセス権を持ち、メールサーバーのドメインを保持していれば認証情報を設定できます。システムが送信したメールの Return-Path を確認してください。メールサーバーのリストの中にドメイン名が含まれていれば、SPF の認証情報を設定できます。ネット上で手順を検索してください。

DKIM: (Domain Key Identified Mail) このシステムもよく使用されています。同じメッセージに SPF と DKIM の両方を使用できます。DKIM も SPF の場合と同様、メールヘッダーを調べることで受け取り側メールサーバーがホストのドメインキーを正当とみなしたかどうかを確認できます。多くの場合、ホストでこのプロトコルを使用しておらず、したがって署名鍵がありません。SPF と同じように、DNS レコードを編集でき、メールサーバーがドメインに属していれば DKIM 認証を自分でセットアップできます。ネットを検索し、手順に従ってください。

WordPress から正しくDKIM キーを送信するには、’phpmailer_init’ アクションをフックします。$phpmailer オブジェクトが渡されますので、必要なプロパティを設定し、オブジェクトを返してください。詳細についてはクラスのソースコードを参照してください。wp-includes/class-phpmailer.php にあります。

投稿内で <!–nextpage–> クイックタグを使いましたが動作しません。どうしてですか ?

WordPress Classic テーマなどのテーマではメインページで <!–nextpage–> が正しく動作するが、WordPress のデフォルトテーマなどのテーマでは投稿を表示すると「改ページ」のみが表示される場合があります。これを解決するには「page.php」や「index.php」などのテーマtemplateファイルを希望に応じて変更する必要があります。次のタブの追加が必要かもしれません。

<?php wp_link_pages(); ?>

MySQL エラー 28

このエラーは一般に次の場合に発生します。

  • /tmp あるいは tempdir の参照先のディスクに空き容量がない、または、
  • /tmp に空き容量はあるが、大量のファイルが存在する

これは MySQL のエラーで WordPress から直接、何かできることはありません。ホスティング会社に相談してください。phpMyAdmin から「repair table」コマンドの実行で問題が解決したというユーザーもいました。

引用符がエスケープされたりされなかったりしているのはなぜですか ?

プラグインや高度なカスタムテンプレートを作成していると、データベース内のデータを直接扱う場合があります。通常は WordPress が、すぐにデータを利用できるようデータを管理していますが、特に WordPress を使用せずに直接データベースを処理する場合などはこのような状況になり、面倒な思いをします。

たとえば引用符(‘)は直接 MySQL データベースに保存できません。MySQL は SQL 言語で引用符を使用します。たとえば投稿の中で引用符が指定されると、データベース内にその投稿が保存される際、すべての引用符はエスケープされます。つまり引用符の前にバックスラッシュ文字(日本語環境では「\」文字)が付加され、次の文字を SQL コマンドの一部でなく、入力の一部として扱うよう伝えます。

たとえば次の投稿を追加します。

...an article about "Happiness" is at 
<a href="http://example.com/happy" title="Happiness">Happiness</a>
if you would like to read it...

実際にはデータベースに次のようにインポートされます。

...an article about \"Happiness\" is at 
<a href=\"http://example.com/happy\" title=\"Happiness\">Happiness</a>
if you would like to read it...

データベースから直接データを取り出すと、バックスラッシュ文字が自動で除去されない場合があります。これが問題であれば、テキストに対して PHP 関数 stripslashes() を使用してください。

コメントを投稿したときにページが真っ白になるのはなぜですか ?

詳細: 投稿にコメントした際、画面が真っ白になり、WordPress に登録されたはずのコメントが表示されない。

原因と解決策: 使用中のテーマにコメントフォームの重要な部分が抜けているため、コメントの参照している投稿が WordPress から分かりません。テーマの comment.php を調べ、フォームに次のコードがあることを確認してください。

<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />

関連する議論のスレッド:

管理画面にアクセスできない場合にすべてのプラグインを停止するには ?

すべてのプラグインを停止 (無効化) しなければならないが、管理画面にアクセスできない場合があります。次のどちらかの方法ですべてのプラグインを停止できます。

phpMyAdmin を使用してすべてのプラグインを無効化する

  1. wp_options テーブルで、option_name 列 (フィールド) の値が active_plugins の行を探す
  2. その行の option_value フィールドを a:0:{} に変更する

または FTP やホスティングサーバーの管理パネルのファイルマネージャーを使用して、プラグインフォルダーをリセットする。この方法ではプラグインのオプションはそのまま保持されますが、手動で再有効化する必要があります。

  1. FTP やホスティングサーバーのファイルマネージャーから、wp-contents フォルダ (ディレクトリ) に移動する。
  2. FTP やホスティングサーバーのファイルマネージャーから、フォルダ “plugins” を “plugins.hold” に名前を変更する。
  3. WordPress 管理画面のプラグインのページ /wp-admin/plugins.php にログインする。この操作により「見つからない」プラグインはすべて無効化されます。
  4. FTP やホスティングサーバーのファイルマネージャーから、フォルダ “plugins.hold” を “plugins” に名前を戻す。

自動アップグレードの後に出てくる「現在メンテナンス中のため、しばらくの間ご利用いただけません。」または「Briefly unavailable for scheduled maintenance」というメッセージを消すには ?

自動アップグレードの途中、WordPress はブログの ベース フォルダー (wp-admin フォルダーの親フォルダー) にファイル「.maintenance」を作成します。このファイルが存在すると、ユーザーにメッセージ「現在メンテナンス中のため、しばらくの間ご利用いただけません。」または「Briefly unavailable for scheduled maintenance. Check back in a minute.」が表示されます。

このメッセージが訪問者に表示されないようにするには、.maintenance ファイルを削除するだけです。もし自動アップグレードに失敗した際は、再度実行できるはずです。

自動アップグレード機能はバージョン2.7で追加されました。

スラッグを含むパーマリンクを使った場合の404エラーを解決するには ?

管理画面 > 設定 > パーマリンク設定 で「日付と投稿名」などの Pretty パーマリンク を使用すると 404 エラーが発生する場合があります。これは「mod_rewrite」モジュールが有効化されていないか、インストールされていないためです。解決するには Apache Web サーバーの「mod_rewrite」モジュールを有効化してください。まずファイル「apache\conf\httpd.conf」の行「# LoadModule rewrite_module modules/mod_rewrite.so」を確認し、先頭の「#」を削除します。次に Apache を停止し、再起動します。注意: mod_rewrite の有効化にはホスティング会社への連絡が必要な場合があります。

参照:

関連する議論のスレッド:

投稿を編集する際に管理者が投稿者として表示されないのはなぜですか ?

この問題が発生する原因は不明ですが、次の2つの方法のどちらかで解決する場合があります。

ほとんどの場合、次の手順で解決します。

  1. 「管理者」権限グループに属する新しい管理者ユーザーを作成する。例えば「newadmin」
  2. 作成した「newadmin」でログインする。
  3. 古い「admin」ユーザーの権限グループを「購読者」に下げ、保存する。
  4. 古い「admin」ユーザーの権限グループを「管理者」に戻し、保存する。
  5. 古い「admin」ユーザーでログインする。

上の手順でうまくいかない場合、次の手順を試してください。

  1. 「管理者」権限グループに属する新しい管理者ユーザーを作成する。例えば「newadmin」
  2. 作成した「newadmin」ユーザーでログインする。
  3. 古い「admin」ユーザーを削除し、すべての投稿を「newadmin」に割り当てる。
  4. 「管理者」権限グループに属する「admin」ユーザーを作成する。
  5. 「admin」ユーザーでログインする。
  6. 「newadmin」を削除し、すべての投稿を「admin」ユーザーに割り当てる。

最新バージョンがリリースされた直後に管理画面で表示されないのはなぜですか ?

最新バージョンがリリースされると管理画面の先頭に通知「WordPress x.x.x が利用可能です。更新してください」が表示されます。ただしこの通知はすべてのブログで同時には表示されません。プログラムは12時間ごとに更新を確認しますが、タイミングは完全にランダムです。このため最新バージョンのリリース直前に更新を確認した場合、12時間後に再び確認するまで通知メッセージは表示されません。

システムからすぐに更新を確認するには、「wp_options」テーブルの「update_core」オプション名レコードを削除してください。注意: プラグインやテーマにもそれぞれ確認や更新の周期があります。これらは「wp_options」テーブルの「update_plugins」レコードや「update_themes」レコードで制御されます。

関連する議論のスレッド:

自動アップグレードの際にどうして WordPress デフォルトテーマへの変更が消えてしまうのですか ?

コア (WordPress 本体) のアップグレードでは、パッケージ内のすべての新しいファイルで古いファイルを上書きします。既存の WordPres のデフォルトテーマ内のファイル、例えば wp-content/themes/twentysixteen/style.css を変更していた場合、変更は新しい同名のファイルで上書きされます。

注意: コアのアップグレードは wp-admin/includes/update-core.php で定義された「古いファイル」リストに従って行われ、削除されます。リストにないファイルや、パッケージに含まれないファイルは削除されません。

注意: 自動であれ手動であれアップグレードの前には、「WordPress のバックアップ」に説明された方法で、WordPress ファイルおよびデータベースをバックアップしてください。

デフォルトテーマを変更する場合は子テーマを使用してください。セットアップに多少の手間は必要ですが、デフォルトテーマが更新されてもカスタマイズ内容は失われず安全です。

参照:

MySQL データベーステーブルを修復するには ?

まれに 1つ以上の MySQL データベーステーブルの修復が必要な場合があります。dev.mysql.com の「MyISAM テーブルの修復方法」によると、テーブルの修復が必要な様々な理由が挙げられています。「tbl_name.frm が変更に対してロックされます」「ファイル tbl_name.MYI が見つかりません (エラーコード: nnn)。」「予期しないファイルの終わり」「レコードファイルがクラッシュしました」「テーブルハンドラからエラー nnn を取得します」

phpMyAdmin を使用した MySQL データベーステーブルの修復手順は次のとおりです。

  1. ホスティングサーバーにログインする。
  2. phpMyAdmin にログインする。
  3. 影響を受けたデータベースを選択する。データベースが1つしかない場合にはデフォルトで選択されているため、操作は不要です
  4. メインパネルにデータベーステーブルのリストが表示されます。修復が必要なテーブルのチェックボックスをオンにする。
  5. ウィンドウ末尾、テーブルのリストの下にドロップダウンメニューがあるので「テーブルを修復する」を選択する。

注意: どのような場合も、データベースの現在のバックアップを取得しておくことが最善の策です。

参照:

さらにヘルプが必要な場合はどうすればいいですか ?

ここにある FAQ だけでなく、WordPress を使うために役立ついろいろな情報があります。

原文

この記事は役に立ちましたか ? どうすればさらに改善できますか ?