昨日、WordpressプラグインのW3 Total Cacheの設定をいじっていました。
で、いろいろな設定を変更して「設定の保存」ボタンをクリックした途端に500エラーが。
この500エラーは、全ページで表示され、管理画面でも完全にエラー画面しか表示されなくなりました。
こうなると、管理画面から設定を元に戻してリカバリーすることもできません。
ただ、FTPソフトとテキストエディターを利用することで何とか復帰することができたので、その方法の紹介です。
目次
500エラーから復帰する主な手順
今回僕は、以下の手順を行うことで何とかW3 Total Cache(以下、W3TC)のエラーから元に戻すことができました。
- .htaccessにW3TCが記述した部分を削除
- wp-config.phpにW3TCが記述した部分を削除
- W3TCプラグインの削除
- wp-content内にW3TCが生成したフォルダとファイルの削除
僕が利用しているエックスサーバーでは、FTPソフトを利用して、上記の手順で、エラーメッセージも出ないように復帰することができました。
FTPなどの設定方法がよくわからない場合は、以下などを参照してください。
以下では、上記手順について詳しく書きたいと思います。
.htaccessにW3TCが記述した部分を削除
W3 Total Cacheプラグインを利用すると、.htaccessファイルの内容に追記する形で設定を書き込みます。
今回、僕のサイトで500エラーが出たのも、おそらくW3 Total Cacheが.htaccessファイルに書き込んだ設定が原因だったと思われます。
なので、今回のような「サイト全体が500エラーになった」なんて症状の場合は、W3 Total Cacheが書き込んだ設定部分を削除してやると、ある程度症状は改善されるかと思います。
.htaccessファイルとは、多くのWEBサーバーで利用されている「Apache(アパッチ)」を制御する設定ファイルの1つです。とにかく非常に大事なファイルで、この設定を誤ると即500エラーなどが出てサイトが表示されなくなってしまうファイルです。
PHPと違って、ブラウザ上にエラーメッセージも出ないため、僕も含む.htaccessファイルの編集に慣れていない人が編集するには細心の注意が必要です。ですので、編集の前に必ず.htaccessファイルのバックアップを取っておいてください。
W3TCが書き込んだ.htaccess内の記述の削除方法
.htaccessは、一般的なサーバーであれば、public_htmlにあるかと思います。
エックスサーバーのディレクトリ構造で説明すると、以下のような位置にあります。
/home/サーバーID/ドメイン/public_html/.htaccess
public_html内にある.htaccessファイルを一旦ダウンロードしてテキストエディターで開きます。
そして中にある、以下のような記述を削除して保存してください。
# BEGIN W3TC Page Cache core <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{HTTP_USER_AGENT} (android.*mobile|bb10|blackberry9500|blackberry9520|blackberry9530|blackberry9550|blackberry9800|cupcake|dream|incognito|iphone|ipod|mobile.*firefox|opera mini|webmate|webos|windows.*phone) [NC] RewriteRule .* - [E=W3TC_UA:_high] RewriteCond %{HTTP_COOKIE} w3tc_preview [NC] RewriteRule .* - [E=W3TC_PREVIEW:_preview] RewriteCond %{REQUEST_METHOD} !=POST RewriteCond %{QUERY_STRING} ="" RewriteCond %{REQUEST_URI} \/$ RewriteCond %{HTTP_COOKIE} !(comment_author|wp\-postpass|w3tc_logged_out|wordpress_logged_in|wptouch_switch_toggle) [NC] RewriteCond "%{DOCUMENT_ROOT}/wp-content/cache/page_enhanced/%{HTTP_HOST}/%{REQUEST_URI}/_index%{ENV:W3TC_UA}%{ENV:W3TC_PREVIEW}.html" -f RewriteRule .* "/wp-content/cache/page_enhanced/%{HTTP_HOST}/%{REQUEST_URI}/_index%{ENV:W3TC_UA}%{ENV:W3TC_PREVIEW}.html" [L] </IfModule> # END W3TC Page Cache core
.htaccess内の「# BEGIN W3TC Page Cache core」から「# END W3TC Page Cache core」までをエディターで削除してしまいます。
編集が済んだ.htaccessをFTPでサーバー上の同じ場所に上書きアップロードしてください。
.htaccessを修正すると、ブラウザ上では500エラーだけは解消される場合がほとんどだと思います。(他でPHPのエラーは出てるかもしれないけど)
なお、大事なことなのでもう一度書きますが、.htaccessの編集に失敗するとApache設定に慣れていない場合は、元に戻せないこともあるかと思います。なので、.htaccessファイルは、編集前にコピーして複製するなどして、バックアップを取っておくことをおすすめします。
wp-config.phpにW3TCが記述した部分を削除
W3 Total Cacheは、Wordpressなどの設定情報が書かれているwp-config.phpにも追記する形で編集を加えます。
この、W3 Total Cacheがwp-config.phpに加える編集も元に戻します。
W3TCが書き込んだwp-config.php内の記述の削除方法
wp-config.phpは、Wordpressのインストールフォルダ直下にあります。
僕の利用しているエックスサーバーだと、先程の.htaccessと同じpublic_htmlにあります。
/home/サーバーID/ドメイン/public_html/wp-config.php
FTPソフトでwp-config.phpをダウンロードして、テキストエディターで開いてください。
そして、中にある以下のような記述を削除して保存してください。
/** Enable W3 Total Cache Edge Mode */ define('W3TC_EDGE_MODE', true); // Added by W3 Total Cache /** Enable W3 Total Cache */ define('WP_CACHE', true); // Added by W3 Total Cache
その他にも、エディターの検索機能などで「Added by W3 Total Cache」という記述がないかを探して、あれば削除してください。
編集が済んだwp-config.phpをFTPでサーバー上の同じ場所に上書きアップロードしてください。
W3TCプラグインの削除
とりあえずこれでW3 Total Cacheプラグインは削除してしまっておいた方が良いかと思います。
なので、FTPでWordpressプラグインフォルダ内にある「w3-total-cache」フォルダも削除してしまいます。
エックスサーバーだと、以下のような位置にあります。
/home/サーバID/ドメイン/public_html/wp-content/plugins/w3-total-cache
FTPソフトで「w3-total-cache」フォルダを削除してしまいます。
wp-content内にW3TCが生成したフォルダとファイルの削除
僕は上記の方法で十分と思っていたのですが、Wordpress管理画面にはまだ以下のようなエラーメッセージが出ていました。
W3 Total Cache Error: some files appear to be missing or out of place. Please re-install plugin or remove /home/XXXXXXXXX/DOMAIN/public_html/wp-content/advanced-cache.php .
W3 Total Cache Error: some files appear to be missing or out of place. Please re-install plugin or remove /home/XXXXXXXXX/DOMAIN/public_html/wp-content/db.php .
W3 Total Cache Error: some files appear to be missing or out of place. Please re-install plugin or remove /home/XXXXXXXXX/DOMAIN/public_html/wp-content/object-cache.php
何かまだ、W3 Total Cacheがwp-contentフォルダ内に生成しているファイル等があったようです。
エックスサーバーでのwp-contentフォルダの位置は以下になります。
/home/サーバID/ドメイン/public_html/wp-content
この、wp-contentフォルダ内にある以下のファイルとフォルダをすべて削除してしまいます。
- w3tc-config(フォルダ)
- advanced-cache.php
- db.php
- object-cache.php
これらファイルを削除すると、管理画面上でもエラーが出なくなると思います。
まとめ
とりあえず、僕の環境(W3 Total Cache0.9.4.1+エックスサーバー)では上記の方法で、500エラーを解消することができました。
ちなみに、データベースにはW3 Total Cacheの設定情報が保存されているので、再度プラグインをインストールすると、エラーが出ます。ですので、再びW3 Total Cacheを利用するには、データベース上で設定情報の削除が必要になるかもしれません。
ただ、とりあえず今回は500エラーからの復帰方法ということでこの辺で。
もし、ページキャッシュプラグインを使用する必要があるのであれば、エラーの出る恐れのあるW3 Total Cacheを利用するよりも、他のプラグインを使ったほうが手っ取り早いかと思います。
昨日(9/26)、「W3 Total Cache」を「0.9.4.1」から「0.9.5」へバージョンアップしたら「500エラー」が発生しました。
管理画面もサイトもエラー表示で白紙状態。
私はlolipopを使用していますが、この記事を参考にして、「W3 Total Cache」を削除し、正常に戻すことが出来ました。
正常に戻った後は、新しいバージョンをインストールしたら正常に働いています。
「W3 Total Cache」のバージョンアップは、旧バージョンを完全削除して、その後に新バージョンをインストールするのが良いように思えています。