「wordpress」タグアーカイブ

さくらのレンタルサーバーでログイン画面で500エラー。クイックインストールでも500エラー

さくらサーバーでWordpressが500エラー internal server errorになる

さくらのレンタルサーバーにWordpressをインストールする時にはパーミッションが問題になる場合がある。

だが、パーミッションが問題なくても管理画面(サイト画面も)500エラーになる場合がある。

そのポイントをまとめておく。
 

パーミッションは問題なし!

直接インストールした場合は、フォルダやphpファイルのパーミッションの設定をしておく必要がある。

しかし今回の場合はパーミッションも問題ない

クイックインストールだから、パーミッションに問題がないのも当たり前。

さくらのレンタルサーバーに他のワードプレスも多数インストールしており、他のWordpressは正常に稼働している。

新規にインストールしたWordpressだけが500エラー。

 

色々調べた結果、php.iniが問題だった

まず、さくらのレンタルサーバーではエラーログを確認してみよう。

さくらのインターネットサーバコントロールパネルにログインし、左のメニューから「アクセスログの設定」をクリック。

ページ中ほどの「エラーログの表示 エラーログ」をクリック。

 
エラーログが表示される。下の方が新しいエラーだ。日付を見ながら確認していこう。

[error] [client **.***.0.106] malformed header from script. Bad header=<br />: install.php

このようなエラーが確認できるなら、PHP.iniの編集で500エラーを回避可能。
 

500エラーの回避方法

さくらのインターネットサーバコントロールパネルで

左のメニューから「PHP設定の編集」をクリック。

php.iniで「magic_quotes_gpc = On

となっている。

これは、フォームで送られた全てのデータがエスケープされる。

つまり、PHPのコマンドなどが正常に受け取れなくなる。

まあ小難しい事はどうでもいいので、この箇所ををコメントアウトしよう。

PHPのコメントアウトは 「;」 で可能。

;magic_quotes_gpc = On

とすれば500エラーは回避できる。

さくらのVPSに導入したWordPressでRSSのFeedや、個別記事のページが404 not foundになったら

WordPressでRSSフィードが取得できない時に疑うこと

ワードプレスでは自動でRSSを出力してくれる。その取得URLは下記の通り、

http://example.com/feed/
http://example.com/feed/rss/
か、
http://example.com/?feed=rss
http://example.com/?feed=rss2

他にもあるが、どうでもいいので割愛。

マネージド・レンタルサーバーであれば多分このエラーはレアケース。

ちゃんと指定してもRSSが取得できないケースがある。
VPSにインストールした場合は割とある。
その原因は .htaccess にある。

 

症状

・RSSが取得できない
・直接RSSのURLを見に行くと404エラー(そりゃ取得できる訳もない)
・個別記事も404
・カテゴリーなども404

 

確認

サーバー内(FTPソフトなどで見る)Wordpressのフォルダの .htaccess をダウンロードして中身を見てみよう。

# BEGIN WordPress
<ifmodule mod_rewrite.c=”">
RewriteEngine On
RewriteBase /wp/
RewriteRule ^index\.php$ ? [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

大体こんな感じのものが書かれているはず。

書かれてなければコピペして上書きアップロードで完了。

書かれてるのにダメな場合もある。
よくあるパターンはVPS使っていて .htaccess が無効になっている場合。

 

VPSで個別記事が404になる時の解決法

.htaccess が無効になっているのを有効化する方法。通称黒い窓を触る必要がある。

さくらのVPSで説明するが、他のVPSでもやり方は割と同じ。


さくらの会員メニューにログインする。

「契約情報」→「契約サービス一覧」→「サーバ設定」→「コンソールの中のシリアルコンソール」

なお、シリアルコンソールでなくてもやり方は同じ。

基本的には、マウスは使えない、コピペなど普通にはできない。

キーボードの矢印とコマンドとエンターでやっていく。

[root@www~]#

となっている状態で

vi /etc/httpd/conf/httpd.conf

と入力して(何回か)エンター。

ずらーっと英語が出て来るので

/AllowOverride

とコマンドを打てば検索できる。

「n」 で次の検索結果へ、「N」で前へ検索していく。

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None

この 「None」 を 「All」 に変更する。

「i」をキーボードで押すとインサートモードになる。

つまり書き換えができる。

インサートモードで「バックスペース」で削除、普通に記入して

記入し終わったらインサートモードを止める。

「ESC」 でインサートモード終了。

続いて mod_rewrite の検索。

/LoadModule rewrite_module

LoadModule rewrite_module modules/mod_rewrite.so の先頭に # がついていれば、その # を削除。

# はコメントアウトなので、 # の行は無視される。

インサートモードを解除(コマンドモードで)

「:wq」エンターで、上書き保存。

[root@www~]# となってるところで、

service httpd restart エンター

で、 httpd を再読み込み。

これで、.htaccess が効くようになり、404は解消されるはず。

【WordPressにログインできない場合の対処法】エラー:予期しない出力によりCookiesがブロックと言われる

急にWordpressにログインできなくなった時の原因と対処法

(ユーザー名とパスワードは間違ってないのに)

主なエラーメッセージはこんな感じ。

Warning: Cannot modify header information – headers already sent by (output started at /…サーバーパス/wp-includes/session.php:1) in /…サーバーパス/wp-login.php on line 425
最後の数字は色々ある。

エラー:予期しない出力により Cookies がブロックされました。ヘルプが必要な場合はこちらのドキュメンテーションを読むか、サポートフォーラムをご利用下さい。

ログインエラーの原因の特定

このエラーが出ている場合の原因を特定すれば、それぞれ対処できる。またブログのデータそのものは壊れていないので、心配はいらない。

1. functions.php の中の改行。
2. functions.php の中の echo が原因。
3. wp-config.php を UTF-8(BOMあり) で保存してしまった。
4. php.ini の設定が原因。
5. 外部からの悪意のある攻撃で nav-menu.php が書き換えられた。

1. 2. 3. については、自分でphpファイルを操作したり、テンプレートをカスタマイズした場合に発生する。

4. は、自分で設定を変更する、または自分で設定しなくても、サーバーの仕様が運営会社によって勝手に変更された場合に発生。

5. は、最近全然使ってなかったけど久しぶりにログインしようと思ったら、といった場合、つまりWordpressのバージョンが最新じゃない時に起こりやすい(特にWordpress4.4以前)。

 
 

1. functions.phpの中の改行が原因の場合の対処法

functions.phpの中の余分な改行、もしくは、header(“Location:….”); の前に改行が入ってるとダメ。

解決法 → functions.phpの該当しそうな改行を片っ端から消す。
ログインできないので、管理画面からではなく、FTPソフトなどを使って/wp-content/themes/テーマ名/functions.php のファイルを直接編集してアップロードしなおす必要がある。

 
 

2. functions.phpの中のechoが原因。

header(“Location:…”); の前に echo があるとダメ。

解決法 → 1.の時と同じように、ファイルを直接修正する。

 
 

3. wp-config.php を UTF-8(BOMあり) で保存してしまった。

何らかの理由で、wp-config.php を編集して上書き保存する時に UTF-8(BOMあり) で保存してしまうことが原因。

解決法 → wp-config.php を UTF-8 で保存しなおす。

もちろん管理画面からではなくFTPソフトなどを使って wp-config.php のファイルを直接保存しなおしてアップロードしなおす必要がある。

 
 

4. php.ini の設定が原因。

自分で設定を変更した場合はもちろんだが、サーバーの運営会社がメンテナンスなどを理由に勝手に変更する場合もある。

この場合は、Wordpressは関係ないので、サーバーにログインして、 php.ini の設定で output_buffering = Off となっていたら、output_buffering = On にすると解決する。

サーバーによっては、そもそも php.ini の設定ができない場合もあるので、カスタマーセンターなどに問い合わせてもいいかもしれない。

 
 

5. 外部からの悪意のある攻撃で nav-menu.php が書き換えられた。

解決法 → /wp-includes/nav-menu.php/wp-admin/includes/nav-menu.php の2つのファイルを確認し、 istart と検索して、該当箇所を削除。

詳しい削除方法はこちらの外部からの攻撃でnav-menu.phpが書き換えられた場合の対処法を参照。

 
 

それでもログインできない場合

最終手段。
新しいWordpressをダウンロードしてきて、Wordpressフォルダを丸ごとFTPで再アップロードする。
記事内容などはデータベースに格納されているので、丸ごと再アップロードしてもブログは無事だ。

ただし、以下のファイルとフォルダだけはアップロードしない事!

WordPressのフォルダ直下にある .htaccess と wp-config.php

/wp-content/themes/今使ってるテーマのフォルダ/

これでどんな問題があってもログインできるようになる。
逆に言うと、これでもダメな場合は、 .htaccess wp-config.php 自分が使っているテーマ のどれかに問題があることになる。