WordPressに403を
WordPressはテーマに404.phpがあると、404エラーの時404ページを表示してくれる。
/index.php?error=404
上記にアクセスすると、404ページが表示されるわけだが…
?error=404ってどう見てもGETパラメータである。
ということは、だ。
403にしたら、403ページが表示できるようになるんじゃないか?
こっち見んな!
WordPressの管理ページがある/wp-adminに機械的にアクセスがあったので拒否る事にする。
/wp-admin以下に.htaccessを設置する。
そして中身を下記のようにする。
1 2 3 4 | AllowOverride Limit Order Deny,Allow Deny from All Allow from 127.0.0.1 203.135. |
1行目でアクセス制御を行うディレクティブ(Order, Allow, Deny)を有効にする。
2行目でAllow(許可)とDeny(拒否)のどちらを先に評価するか設定。
3行目で全て拒否。
4行目で許可するIPを設定。
上記では127.0.0.1(ループバックアドレス)と203.135.???.???を許可する。
許可されてないIPで接続して、403ページが表示されたらおk。
っていうけど、許可されてないIPから接続するのって意外と難しいよね。
ホームページテスト【外部からの表示確認】
とかで確認するといいかも。
Logwatchが来なくなった!
サーバーの日々の診断書的なLogwatchが来なくなった。
cron.dailyにちゃんと入れてるので毎日動いてくれるはず何だけれど、何故か動かない。
てことで、cronのログを見てみた。
1 2 3 | # less /var/log/cron May 23 22:01:01 xxx anacron[22051]: Job `cron.daily' locked by another anacron - skipping May 23 22:01:01 xxx anacron[22051]: Normal exit (0 jobs run) |
おやー?
「今動いてるからロックされてるよ。スキップするね。」的なメッセージが…
今 動 い て る だ と ?
1 2 3 4 5 6 7 | # ps aux | grep cron
root 3905 0.0 0.0 106956 884 pts/0 SN+ 19:19 0:00 grep cron
root 10936 0.0 0.0 111956 1268 ? SNs May23 0:00 crond
root 19192 0.0 0.0 14532 920 ? SNs May23 0:00 /usr/sbin/anacron -s
root 19681 0.0 0.0 9100 1140 ? SN May23 0:00 /bin/bash /usr/bin/run-parts /etc/cron.daily
root 21888 0.0 0.0 9100 1096 ? SN May23 0:00 /bin/bash /etc/cron.daily/clamav.sh
root 21889 0.0 0.0 8952 740 ? SN May23 0:00 awk -v progname /etc/cron.daily/clamav.sh progname {????? print progname ":\n"????? progname="";???? }???? { print; } |
clamav.shで止まってるっぽいね。
clamav.shって、ウイルススキャンなんすけど…
とりあえず、普通にスキャンしてみる。
と、その前にclamav.sh殺しておこうかな。
# kill 21888
殺したら後続のが動いた。
で、普通にスキャン。
LibClamAV Warning: fmap_readpage: pread fail: asked for 4094 bytes @ offset 2, got 0
こんなメッセージが/sysでたくさん出て止まった…
CPU使用率100%になったまま…
preadのエラーかな?
ちなみに、clamdのヴァージョンは0.96.1
ちょろっと検索してみたけど、解決策はないみたいで…
ヴァージョンアップ待ちだってさ。
仕方ないので/sysをスキャンから除外。
WPAdsを使わない時のために
広告等をランダム表示できるプラグインWPAdsをテーマに組み込んでいて、その組み込んだゾーンが空になった場合、何も出力されなくなるので、空divになってしまったり、テーマが崩れる事があるので、その対策。
wpadsはprint文が書いてあるだけなので、wpadsの中で呼んでるget_wpadsを使う。
get_wpadsだとhtmlを返してくれるので、これを変数に入れてissetで中身が入ってるかどうかがわかる。
うちの場合はこんな感じ。
1 2 3 4 5 6 7 8 | <?php $wpads = get_wpads('header'); ?> <?php if(isset($wpads)): ?> <div id="ad"> <div id="ad_inner"> <?php echo $wpads; ?> </div> </div> <?php endif ?> |
get_wpads(‘header’)の結果を変数$wpadsに代入。
変数$wpadsが空じゃなかったら、周りのdiv要素とechoで変数$wpadsの中身を出力。
ウィジェットでPHPを実行する -Executable PHP widget-
WordPressのウィジェットは、手軽にサイドバーにテキストやHTMLを追加できるけど、PHPが実行できない!
PHPが実行できたらもっと便利!
わざわざ、テーマにPHP追加しなくてよくなるしね。
ってことで、ウィジェットでPHPが実行できるプラグインを追加。
WordPress › PHP Code Widget « WordPress Plugins
インストールして有効化するとウィジェットに「PHP Code」が追加される。
これに思う存分PHPを書きなぐれば、実行結果がサイドバーに表示されてウマー。
今回、ウィジェットでPHP実行して何がしたかったかというと、WPAdsをウィジェットで表示させること。
サイドバーに広告をビローンと何個も表示させるのは見苦しいのでな。
uptime!! v0.3
WordPressプラグインで管理ページ以外のところにフックを使ったことがなかったので、試しにthe_contentにフックしてみた。
とりあえず、記事に書かれた任意のhtmlコメントを置換してみることに。
“<!– uptime!!#uptime –>”で連続稼働時間
“<!– uptime!!#idletime –>”でアイドル時間
ま、実用性はないよねぇ…
uptime!! v0.2
uptimeは/proc/uptimeを参照してるだけなようなので、こっちを見て計算した方がuptimeコマンドのフォーマットに左右されないし、秒まで表示できるのでこっちを使いましょ。
$ cat /proc/uptime 8946563.01 17548528.13
/proc/uptimeを表示してみると、こんな感じ。
稼働時間 アイドル時間となってる。
まぁ、最初見たときはアイドル時間が稼働時間より長くて「なんぞ?」と思ったけど、コア二つ分のアイドル時間を合わせたものだと思うとしっくりくる。
うん、実はデュアルコアなんだ。
てなわけで、60で割ったり24で割ったりと頭がぐちゃぐちゃになりながらもできました。
時間の計算ってメンドイヨネ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | <?php /* Plugin Name: uptime!! Plugin URI: http://www.dazzlingworld2.com/post_4177.html Description: サーバーのアップタイムを表示する。 Version: 0.2 Author: だかね Author URI: http://www.dazzlingworld2.com/ */ function the_uptime() { $uptime = get_uptime(); echo $uptime[0] . "日 " . $uptime[1] . "時間 " . $uptime[2] . "分 " . $uptime[3] . "秒 " . $uptime[4]; } function the_idletime() { $idletime = get_uptime(1); echo $idletime[0] . "日 " . $idletime[1] . "時間 " . $idletime[2] . "分 " . $idletime[3] . "秒 " . $idletime[4]; } /* 稼働時間またはアイドル時間を取得する。 $sw = 0 : 稼働時間 $sw = 1 : アイドル時間 */ function get_uptime($sw = 0) { $uptime = array(0 ,0 ,0 ,0, 0); // 日時分秒㍉ // 引数が0, 1以外の場合は終了する。 if($sw != 0 && $sw != 1) return $uptime; // "/proc/uptime" から稼働時間(秒)を取得する unset($stdout); // $stdoutを空にする exec('/bin/cat /proc/uptime', $stdout, $rcode); $proc_uptime = explode(" ", $stdout[0]); // 取得に失敗した場合は終了する。 if($rcode) return $uptime; // 稼働時間(秒)を日時分秒㍉に変換 $usec = explode(".", $proc_uptime[$sw]); $uptime[4] = $usec[1]; // ㍉ $uptime[3] = $usec[0] % 60; // 秒 $time = ($proc_uptime[$sw] - $uptime[3]) / 60; if($time > 0) { $uptime[2] = $time % 60; // 分 $time = ($time - $uptime[2]) / 60; } if($time > 0) { $uptime[1] = $time % 24; // 時 $time = ($time - $uptime[1]) / 24; } $uptime[0] = floor($time); // 日数 return $uptime; } ?> |
<?php the_uptime(); ?>を呼べば稼働時間が、
<?php the_idletime(); ?>を呼べばアイドル時間が表示される。
実行結果
103日 13時間 27分 19秒 73 203日 3時間 11分 2秒 96
CPU:「かなり暇…」
uptime!!
サーバーの連続稼働時間を表示してみたくなったので、ちょろっと作ってみた。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | <?php /* Plugin Name: uptime!! Plugin URI: http://www.dazzlingworld2.com/post_4166.html Description: サーバーのアップタイムを表示する。 Version: 0.1 Author: だかね Author URI: http://www.dazzlingworld2.com/ */ function the_uptime() { echo get_uptime(); } function get_uptime() { $uptime = `uptime`; $day = 0; $hur = 0; $min = 0; // 稼働日数の取得("x day" or "xx days"を検索) if(preg_match("/(\d+)\s+days?/", $uptime, $matches)) { $day = $matches[1]; } // 稼働時間の取得 if(preg_match("/(up|,)(\s+)(\d{1,2}):(\d{1,2})/", $uptime, $matches)) { // "up h:mm" or ", h:mm" $hur = $matches[3]; $min = $matches[4]; } else if(preg_match("/(up|,)(\s+)(\d{1,2})(\s+)min/", $uptime, $matches)) { // "up m min" or ", m min" $hur = 0; $min = $matches[3]; } return $day . "日 " . $hur . "時間 " . $min . "分"; } ?> |
uptimeの表示形式が稼働時間によって統一されてないので、表示がおかしくなるかも…
おると
WordPressで画像をアップロードした場合、title属性は付けれるけど、alt属性が付かない。
ちょっと気になったので、自動で付けてくれるプラグインをインストールした。
WordPress › SEO Friendly Images « WordPress Plugins
ただ、記事タイトルとファイル名とカテゴリ名しか指定できないのが気になるが…

205StudioTR