創意無限空間

Archive for 7 月, 2007

WordPressのサムネイルについて このエントリーを含むはてなブックマーク

昨日作成したエントリで、サムネイル画像がやけに小さくなっていたのが気になりました。これはWordPressの管理画面から画像ファイルをアップして、サムネイルを表示するという手順を踏んだのですが、デフォルトの設定だと、サムネイル画像の最大サイズは幅128px、高さ96px以上にならないようです。

残念ながらWordPressの管理画面からはサムネイルの最大サイズの変更は出来ないよう。その代わり、直接ソースに手を加えることでサムネイルのサイズを変更出来るようです。なお今回の対象はWordPress ME 2.2.1です。

参考サイト:

修正するファイルは、wp-admin/admin-functions.phpです。ここではサムネイルサイズの最大サイズを幅400px、高さ300pxにしています。

2107行目:

function get_udims( $width, $height) {
// if ( $height < = 96 && $width <= 128 )
if ( $height < = 300 && $width <= 400 )
return array( $width, $height);
elseif ( $width / $height > 4 / 3 )
// return array( 128, (int) ($height / $width * 128 ));
return array( 400, (int) ($height / $width * 400 ));
else
// return array( (int) ($width / $height * 96 ), 96 );
return array( (int) ($width / $height * 300 ), 300 );
}

2228行目:

if ( $max < 0 || $metadata['width'] * $metadata['height'] < $max ) {
// $max_side = apply_filters( ‘wp_thumbnail_max_side_length’, 128, $attachment_id, $file );
$max_side = apply_filters( ‘wp_thumbnail_max_side_length’, 400, $attachment_id, $file );
$thumb = wp_create_thumbnail( $file, $max_side );

if ( @file_exists($thumb) )
$metadata['thumb'] = basename($thumb);
}

さてこれで、サムネイルのサイズが変わるはずです。ローカルサーバーで動作確認してみると…

??? サムネイル画像が生成されていない…

おかしいと思い、Apacheのエラーログを見てみると何やらエラーが。

[client ***.***.***.***] PHP Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 719280 bytes) in /***/wp-admin/admin-functions.php on line 2266, referer: http://*****/wp-admin/upload.php?style=inline&tab=upload&post_id=*****
Allowed memory size of 8388608 bytes exhausted (tried to allocate 0 bytes)

というわけでメモリーが足りなかったようです。php.iniのmemory_limitを修正してみます。もしレンタルサーバーなどで編集が出来ない場合は、小さいファイルサイズの画像で試したり、上記のサムネイルサイズを小さめにするといいのかな?(これは未確認)

memory_limit = 32M

参考サイト:

2 comments

WordPressのAkismetプラグインを使ってみる このエントリーを含むはてなブックマーク

WordPressには標準でコメントスパム対策のプラグインであるAkismetが用意されています。ただ、これを実際に使えるようにするには色々と手順を踏まなければいけないので、まとめてみました。

  1. WordPressのプラグイン管理画面で、Akismetを有効化します。
    WordPressプラグイン管理画面
  2. しかし、この時点ではまだ作動はしていません。WordPress.com API Keyを取得する必要があります。
    Akismetプラグインを有効にする
  3. WordPress.comでユーザー名、メールアドレスを入力します。そしてリンク先に目を通したらLegal flotsamのチェックボックスをチェックします。wordpress.comのブログは特に必要なかったので、下のラジオボタンを選択して、次へ。
    WordPressアカウント登録
  4. プロフィール情報を入力します。
    WordPressプロフィール情報登録
  5. アクティベート用URLの書かれたメールが届くのでアクセスすると登録が完了します。登録が完了するともう一通メールが届きます。そこにはユーザー名、パスワードの他に、AkismetのAPI Keyが書かれています。
    WordPress登録完了メール
  6. WordPressのプラグイン管理画面に「Akismetプラグインの設定」というタブが出来ているのでそこをクリックします。するとAPIキーの入力画面になるので、先ほどのメールにあったAPI Keyを入力します。
    Akismetプラグインの設定
  7. API Keyの認証が完了すると設定は終わりです。
    WordPress.com API Key認証完了

これでコメントスパムやトラックバックスパムが来ても、Akismetがはじいてくれます。Akismetは学習機能があるので、もしスパムが通過してしまったとしても、該当のスパムをチェックすることでその結果を学習していきます。

1 comment

さくらの専用サーバーの無防備っぷり このエントリーを含むはてなブックマーク

先日、さくらインターネットで専用サーバーをレンタルしました。で、サービスのセットアップや動作確認など準備を進めている最中なのですが…

サーバーをレンタルしてから数日後、ふとログファイルをチェックしていたところ、/var/log/maillogに見覚えのないログがつらつらと…

…思いっきりSPAMの踏み台にされていましたorz

もしや!! と思い、iptablesで解放portを調べてみたところ…

# /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

うは、完全ノーガード!! iptablesの設定が空っぽでした。/etc/sysconfig/iptables ファイルが見あたりません。せめてhttpとsshだけとか、初期状態で解放portを絞っておいてくれればいいのになぁと思うのですが。すっかり油断していました。さくらさん、頼みますよ…

慌てて/etc/sysconfig/iptablesを用意し、httpとssh以外はrejectするように設定。/etc/sysconfig/iptables を以下の内容で作成します。

# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp –icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited
COMMIT

そしてiptableを再起動します。

# /etc/init.d/iptables restart

再起動後、iptablesでチェック。

# /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all — anywhere anywhere

Chain FORWARD (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all — anywhere anywhere

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain RH-Firewall-1-INPUT (2 references)
target prot opt source destination
ACCEPT all — anywhere anywhere
ACCEPT icmp — anywhere anywhere icmp any
ACCEPT esp — anywhere anywhere
ACCEPT ah — anywhere anywhere
ACCEPT all — anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp — anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp — anywhere anywhere state NEW tcp dpt:http
REJECT all — anywhere anywhere reject-with icmp-host-prohibited

というわけで、無事反映されました。今のところ問題はなさそうです。

最近、利用者の多いさくらインターネットのレンタルサーバーですが、利用開始したら、まず真っ先にiptablesの設定を見直して、不要なportを塞いでおきましょう。あと不要なサービスの停止も忘れずに。

追記:
SMTPのリレーに関してご指摘があったので、再度ログを精査したところ、リレー拒否されていました。というわけで「SPAMの踏み台に~」のくだりは訂正します。申し訳ありません。とはいえ、portを塞いでおくのは重要だと思うのと反省の意味を込めてこのエントリは残しておきます。

31 comments