#author("2017-03-29T22:13:18+09:00","default:wikiwriter","wikiwriter")
&tag(WordPress/トラブルシューティング);
*目次 [#xbcd7e63]
#contents
*関連ページ [#w5f85e3b]
*参考情報 [#kf5d0112]


*サムネイル [#hf9d57cc]

**記事一覧のサムネイルのアスペクト比がくずれる [#waf0d70a]

-Simplicityテーマで発生。
-原因はPHPでGDモジュールがインストールされておらず「Regenerate Thumbnails」でもサムネイルが作られていなかったことが原因。
-そもそもSimplicityで記事一覧に表示されている画像は「アイキャッチ画像」のサムネイルとなっている。サムネイルが作られている場合クロッピングされたアイキャッチ画像のサムネイル画像が表示されるのだが、サムネイル画像がないためもとのアイキャッチ画像が縮小表示されていた。
-Auto Post Thumbnailで最初の記事を自動的にアイキャッチ画像にしても、そのアイキャッチ画像のサムネイル画像が作られていない限り同様の減少となる。


**人気記事一覧でサムネイルが表示されない [#p291a122]
-WordPress Popular Postsも、これを使用しているSimplicityの人気記事一覧でも表示されない。
-これも原因はサーバーにPHP GDがインストールされていないのが原因。
-SimplicityのウィジェットはWordPress Popular Postsを利用しているので、これでもだめな場合WordPress Popular Postsを直接使ってみる。
-Permissionエラーが表示された場合、wp-content/uploadsディレクトリやその下のファイルのパーミッションを変更してみる。
*その他 [#fda74deb]

**データベース接続エラーが発生する [#d26e1cbf]
-ユーザー名/パスワードが違っているとか、MySQLの設定がおかしいとか。wp-config.phpで、WP_DEBUGをtrueに設定する。
 define('WP_DEBUG', true);
-php.iniでmysqlの設定がおかしい場合もある。phpinfoを表示して、mysql設定が正しいか、正しくphp.iniが読み込まれているか確認するとよい。
**プラグイン/本体をアップグレードしようとすると「ファイルストリーミングの送り先となるディレクトリが存在しないか、書き込み不可になっています。」といわれる。 [#ufe318ef]
-wp-content/upgradeフォルダのパーミッションを確認する。
-wp-config.phpで、WP_TEMP_DIRのフォルダがどうなっているか確認する。本来不要だけどサーバー移転時に以前使っていた設定が残っていてはまることがあるかも。
#pre{{
define ('WP_TEMP_DIR', '/home/src256/tmp');
}}

-update-core.phpのソースコードが表示される。
-原因不明。その状態でリロードすると正しく表示された。


**管理ページの投稿一覧で2ページ目が閲覧できない [#qe786f2b]
-[[WordPress › Support » IP Redirect Issue in WP 3.1, 3.1.1, 3.1.2:https://wordpress.org/support/topic/ip-redirect-issue-in-wp-31-311-312]]
-[[やればできる!Apacheリバースプロキシ+WordPress | hiro345:http://www.sssg.org/blogs/hiro345/archives/7013.html]]
-HTTP_HOSTが正しく設定されていないのが原因のようだ。
#pre{{
define('WP_SITEURL', 'https://example.jp/wp/'); 
define('WP_HOME', 'https://example.jp/wp/'); 
define('WP_CONTENT_URL', 'https://example.jp/wp/wp-content');
$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
$_SERVER['HTTPS'] = 1;
}}
-実際は以下の2行の追加で表示できるようになった。
#pre{{
$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
}}


**無限リダイレクトの無限ループが発生してページが表示できない [#n01333a5]
-WordPressのトップページにアクセスすると「http://localhost/wp/:///」という風なリダイレクトが発生しページが表示できない。
-ブラウザだと分かりづらいので「curl -i http://localhost/wp/」でテストすると良い。
-最初は.htaccessのパーマリンク設定化と思っていたがこれを削除しても関係なかったので違う。
-[[WordPressのリダイレクトループの解決方法:http://it-nikki.com/20120305-1397]]のようにtemplate-loader.phpの「do_action(‘template_redirect’);」をコメントアウトしたら良いという情報がありコメントアウトしたら確かにリダイレクトループは解消された。ただし原因は書かれていない。そもそも普通はリダイレクトループが発生しないので何か原因があるはず。
-さらに調査するとredirect_canonicalが原因らしい。これはURLの正規化を行っている。
-どうやらリバースプロキシ設定のためにいれた以下の2行がそのままだったのが原因だった(リバースプロキシ環境じゃないところで動かそうとしたので。HTTP_HOSTが空白となる)。
#pre{{
$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
}}
-とはいえOS XのHomebrewで入れたPHP 5.3.29だと問題なく、CentOS 6.7のPHP 5.3.3だとエラーが発生するのでやはり何かがおかしく調査続行。
-wp-config.phpに以下の設定を追加しプリントデバッグ。
#pre{{
define('WP_DEBUG', true);
//define('WP_DEBUG', true);
if (WP_DEBUG) {
    define('WP_DEBUG_LOG', true); //エラーをdebug.logファイルに書き出す
    define('WP_DEBUG_DISPLAY', false); //エラーをブラウザに表示しない
    @ini_set('display_errors', 0); //エラーをブラウザに表示しない
}

if(!function_exists('_log')){
  function _log($message) {
  if (WP_DEBUG === true) {
  if (is_array($message) || is_object($message)) {
        error_log(print_r($message, true));
  } else {
        error_log($message);
  }
  }
}
}
}}
-結局canonical.phpの@parse_url($requested_url)の戻り値がPHP 5.3.3の場合空白となり、 5.3.29だと配列として戻り値が戻ってくることが原因だとわかった。
#pre{{
<?php
$result = parse_url(":///");
echo $result;
?>
}}
-結局PHPの不具合だったのかどうか、これ以上は不明。とりあえず$_SERVER['HTTP_HOST'] に値が設定されていれば問題ない。


**データベース内の投稿を更新できません [#e4900fd8]
-MySQLの絵文字問題らしい。絵文字を削除したら大丈夫だった。

**トップページ以外で404エラーが発生 [#e9baa440]
-mod_rewriteが有効になっていない。
-.htaccessなどでRewriteRuleの設定が間違えている。

**人気記事一覧のサムネイルが表示されない [#u6e126a1]
-Simplicityの人気記事一覧はwordpresss popular postsプラグインの機能を利用している。このためトラブルシューティングのためにwordpresss popular postsを素で入れてみるのも良い。
-サムネイルはwp-content/uploads/wordpress-popular-postsに書き出される。このフォルダのパーミッションが777ならば一応問題無い。ただしなぜかファイルのオーナーはdaemon/staff、daemon/wheel等、apache2の実行ユーザーとなったファイルが入り交じった状態となる。
-PHPをモジュール版で使う場合、wordpress以下のオーナーをapache2の実行ユーザーにそろえておくと簡単。そうしたくない場合suexecを使ってcgiモードでやるしかないかも。

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS