いわゆるブログライターというもので、バージョンアップしたばかりの自分のサイトに投稿しようとアクセスしたら、こんなエラーが。
[tegaki]なんじゃこりゃ?[/tegaki]
xmlrpc.php のエラーかな、でもサーバーエラーなんだから、サーバーかな?
500エラーっていうのはCGIの設定なんかが間違っているときに出たりしますよね。でも、CGI なんか使ってないし。。。?
さっそくググッてみたら、こんなエラーがけっこう多発している様子。原因をみんなそれぞれ考えるんだけれどみんなそれぞれで、コレ、という答えが見つかりません。
INIファイル、CONFファイルの設定ミスかと思って調べてみたけれどわかりませんでした。
そこで思いついて、 サーバーにあるエラーログファイルを見てみました。
そしたら、こんなエラーが記録されていました。
| PHP Warning: include_once(/hoge/hoge/hoge/wp-includes/class-IXR.php) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /hoge/hoge/hoge/xmlrpc.php on line 55 |
| PHP Fatal error: Class ‘IXR_Server’ not found in /hoge/hoge/hoge/xmlrpc.php on line 108 |
これをみてわかりました。
どうやら xmlrpc.php のなかに書いてある、class-IXR.php ファイル、そんなファイルやディレクトリーはないと言っています。(55行目)
さらに、たぶんこれを受けてだろうと思いますが、IXR_Server なんて見つかりませーんとか言っています。(108行目)
ないと言われても困るので、FTPで探してみたら、やっぱりないんです、コレが。
そのかわりに、class-ixr.php ファイルならありました。
そうです。これです。ファイル名なんて小文字が常識と思っていて、FTPの設定が大文字を小文字にして転送するになっていました。
ところがWopdPress ファイルの中には大文字を使ったファイルがちまちまあります。
wp-includes/class-IXR.php
xmlrpc.php の55行目にも、そのように書いてありました。
開いた口がふさがらないとはこんなときに使うのでしょうか。
さっそくFTPでファイル名をclass-IXR.php に修正したところ、無事にエラー画面はでなくなりました。
これはWordPressのバージョンアップ以後に起こったことです。似たようなことをしている人が少なからずいるのではないでしょうか。。
わたしだけかな。。。?
wordpressの有名なケータイ投稿プラグイン、Ktay Entryを導入しましたが、全く動きませんでした。
私の場合、メールが着信したら自動的にチェックするタイプに設定しようとしたのですが、説明どおりに .FORWARDファイルを設定しても、どうもinjekt.phpが動いていない様子。というか、 .FORWARD が動かないのかもしれない??
そこでいろいろ調べたら、/etc/aliases というファイルも .FORWARD と似たような働きをするファイルとか。
これはもともと sendmail 用のファイルなのですが、postfix でも設定ファイル main.conf に定義すれば使えるとか。
そこでmain.conf を見てみると、bash /etc/aliases などという一文が書いてあったんで、これで大丈夫なのかな?
ともあれ、/etc/aliases に下記のように設定しました。
| mailboxname “| /(inject.phpへのパス)/inject.php “ |
mailboxname というのは、ケータイ投稿用に作ったメールアドレスのアカウント名です。
/etc/aliases は書いただけではだめで、コマンドラインから、
# newaliases
とコマンド入力して実行させないと postfix のdb に読み込まれないのだそうです。
さて、このほうほうでケータイ投稿してみたら、今度はばっちりうまく動きました!
.FORWARD で動かない人で、postfix か sendmail を使っている人は試してみる価値ありです。
more-smileプラグインを入れてみて、ぜんぜん動かないので、似たようなプラグインを探して
WP-Grinsをいれてみた。
今度は投稿画面にちゃんとアイコンが表示されているし、投稿するとアイコンもひょうじされる。
が。。。。
本文が表示されないのだ
どうして?なぜ?
ゆうべおそくまでテンプレートをいじっていたので、ねぼけてどこか消しちゃったのか?
またソースをいじらないといけないのか、テンプレートもいじらないといけないのか、、、ホトホト疲れた
そこで思いついた
もしかして同じようなプラグインで競合してうごかないのか。。。。?
ためしにmore-smileを使わない設定にした。
そうしたら本文が表示されました。
まったくもって謎ですが、とりあえず一件落着
タイトルの文字化けに困り果てていた。
どこをどうすれば直るのか。
すると下記のサイトを見つけました。ありがとう。助かりました。
http://june29.jp/2006/09/13/entry-page-title/
どうしたかというと、現在使っているテーマのheader.phpのタイトルを表示させているに違いないと思われるところを
下記のスクリプトに書き換えたのです。
<title>
<?php if ( is_single() ) ?><?php wp_title(‘ ‘); ?>
<?php if(wp_title(‘ ‘, false)) { ?> – <?php } ?><?php bloginfo(‘name’); ?>
</title>
とくに<<とか>>を使うと化けるとのこと。
しかしわたしの使っているテーマではセパレータを - とかにオプションから変えてもカテゴリー名が化けたままです。
しかたないから、強硬手段。タイトルを書き出していると思われるところにあたりをつけて上記に上書きしてしまいました。
そうしたら文字化けしませんでした。
ということはわたしの使っているテーマのスクリプトのどこかに不具合があったのでしょう。
とりあえず一件落着。
——————————-
更新前
<head>
:
<?php
global $options;
foreach ($options as $value) {
if (get_settings( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_settings( $value['id'] ); } }
?>
<?php include (TEMPLATEPATH . ‘/functions/bfa_meta_tags.php’); ?>
<link rel=”stylesheet” …………
:
</head>
————————–
更新後
<head>
:
<?php
global $options;
foreach ($options as $value) {
if (get_settings( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_settings( $value['id'] ); } }
?>
<title>
<?php if ( is_single() ) ?><?php wp_title(‘ ‘); ?>
<?php if(wp_title(‘ ‘, false)) { ?> – <?php } ?><?php bloginfo(‘name’); ?>
</title>
<link rel=”stylesheet” ……..
:
</head>