2006年10月16日月曜日

「タグが閉じられていません」を手軽に解決する方法


MTを3.3にアップグレードすると、サイト内検索が「結果の表示ができません: <MTTagName>タグが閉じられていません。」というエラーが出るようになりました。



このエラーの原因および正当な解決策はGoogleでヒットする他のサイトを参考にしてください。



http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGLG,GGLG:2006-17,GGLG:ja&q=%3cMTTagName%3e%e3%82%bf%e3%82%b0%e3%81%8c%e9%96%89%e3%81%98%e3%82%89%e3%82%8c%e3%81%a6%e3%81%84%e3%81%be%e3%81%9b%e3%82%93%e3%80%82+




さて、このページでは正当な解決策とはちょっと違った、非常に手軽な解決策をご紹介します。
以下、手順です。



---



1.search_templates/default.tmplを、search_templates/default_search.tmplという名前でコピー



2.search_templates/default_search.tmplを開き、Tagに関連する記述を片っ端から削除する



3.mt-config.cgiを開き、 AltTemplate default_search default_search.tmpl という記述を追加



---



以上。



http://your.mt.url/mt-search.cgi?IncludeBlogs=*&search=hoge&Template=default_search



こんな感じで、お尻に「&Template=default_search」をくっつけるとエラーが消えます。
あとは検索フォームに<input type="hidden" name="Template" value="default_search" />を加えればOK。




タグ機能を使っていない人、プラグインのソースをいじるのに抵抗がある人、などにはこの方法が手軽でちょうどいいかもしれません。

2006年10月7日土曜日

postfixとqpopperを入れる


これまでメールサーバーはqmailを使っていましたが、postfixが主流になりつつあるようなので勉強がてら入れ替えてみました。



入れ替える、と言ってもVineLinux3.2では標準でpostfixが入っているのでインストールは必要ありません。有効にするだけです。



# chkconfig postfix on



続いて設定。/etc/postfix/main.cfの編集をします。
以下のサイトを参考にさせていただきました。



http://www.miloweb.net/mail.html
http://hnw.dip.jp/server/postfix.html



これでqmailを止めてpostfixを起動すれば入れ替え完了。
念のため不正中継のテストもしておきます。
http://www.abuse.net/relay.html



もちろんテストは無事通過。



ちなみに、postfixを起動するときに



sendmail: fatal: please use fastforward/newaliases instead



というエラーが出ます。
これはqmailをインストールした際、「/usr/sbin/sendmail」を「/usr/sbin/sendmail.bak」にリネームし、新たに「/var/qmail/bin/sendmail」へのシンボリックリンクとして「/usr/sbin/sendmail」を作っていることが原因です。というわけで、sendmail.bakをsendmailに戻してやれば解決します。



 



続いてpopサーバーを用意します。今回はqpopperを使いました。
例によってapt-getでインストールします。



# apt-get install qpopper



その後の設定はこちらのサイトを参考にさせていただきました。
http://www.miloweb.net/qpopperapop.html



これですべて完了。。。と思ったんですが、メールクライアントからpopサーバーへのアクセスができない。特に間違ってないと思うんだけど、おかしいな。。。



しばらく悩みましたが、原因は/etc/hosts.allowにありました。



ウェブ上のいくつかのページを見たんですが、



pop: 許可したいIP



とか



pop3: 許可したいIP



などのように設定しろ、と書いてあります。
が、この通りに書いてもNG。
ようやく見つけた正解は以下でした。



in.qpopper: 許可したいIP



こちらのサイトを参考にさせていただきました。ありがとうございます。
http://shikichi.ddo.jp/qpopper_set.html




以上で入れ替え完了。意外とすんなりいけました。
以前はqmailをソースから入れていたんですが、それに比べると圧倒的に楽でした。




あとせっかくpostfixにしたのでバーチャルホストも使ってみました。



http://www.miloweb.net/postfix_virtualhost.html



すごく簡単です。確かqmailだと面倒だった記憶があるので、バーチャルホストを使いたい人にはオススメです。



 



◆追記
postfixではメールの振り分けなどでPerl正規表現も使えるようです。
その場合は、



# apt-get install postfix-pcre



でPostfix PCRE サポートのモジュールをインストールします。

2006年10月1日日曜日

xamppを使ってみた


phpspotで紹介されているxamppというツールを使ってみました。



xamppは、Apache、MySQL、PHP、phpMyAdmin、Webalizer、FTPなどなど、Windows上でphpアプリの開発をするために必要なサーバー系ソフトがまとめてインストールできてしまう、という夢のようなソフト。読み方は、、、わかりません。「ザップ」とかかな?




実際に自分のローカルにインストールしてみましたが、素晴らしいの一言。
これまでWindows上で開発環境を作るときはApache、MySQL、PHPをひとつずつダウンロード、インストール、設定、、、とやっていたわけですが、xamppならインストーラでウィザードに従ってるだけで超簡単。さらにxamppコントロールパネルというのが標準で付属しており、これを使えば各サーバーソフトの起動・停止をまとめて管理できます。



xampp、Windowsでphpアプリの開発をするなら絶対オススメです。

2006年9月29日金曜日

Windowsの不要なサービスを削除する


WindowsマシンにApacheやらMySQLやら、開発用にサーバー系ソフトをインストールするとWindowsのサービスとしてそれらを起動することになります。



このサービスですが、ソフトによってアンインストールしても消えずに残ってしまい、キモチワルイことがしばしばあります。



そんなときはコマンドプロンプトから、



C:\Documents and Settings\Administrator>sc delete Apache2



みたいな感じで、「sc delete サービス名」とやるだけで簡単に消えます。



どうってことはないんですが、気分的にさっぱりします。

2006年9月22日金曜日

サムネイル画像作成支援クラス「Thumbnail.inc.php」


phpにはデフォルトでイメージ関数があり、それを使って画像のリサイズ等の加工ができますが、使いこなすのがちょっと大変で、ソースコードがわかりにくくなってしまうという難点がありました。
そうした問題を解決してくれるのがクラス。



http://www.gen-x-design.com/projects/php-thumbnailer-class/



少し試してみましたがかなり使えそうです。

2006年9月21日木曜日

mod_rewriteでアクセスごとに処理を振り分ける


今回やったことは、



hoge.example.com へアクセスがあった場合 /home/homepage/public_html/hoge に



ahe.example.com へアクセスがあった場合 /home/homepage/public_html/ahe に



それぞれ処理を振り分ける、というもの。もちろん「hoge」と「ahe」だけじゃなくて「ufu」でも「oho」でもなんでもあり、/home/homepage/public_html以下にディレクトリが存在していればそちらに処理を振り分けます。



mod_rewriteを使い、httpd.confに以下のように記述します。



    ServerAdmin root@example.com
    DocumentRoot /home/homepage/public_html
    ServerName www.example.com
    ServerAlias *.example.com
    ErrorLog logs/example-error_log
    CustomLog logs/example-access_log combined

    RewriteEngine On
    #RewriteLog logs/test-rewrite.log
    #RewriteLogLevel 3
    RewriteCond %{HTTP_HOST}  ([^\.]+).*
    RewriteRule ^(.*)$ /%1/$1 [L]



※当然ですが、apacheの設定以前にDNSにワイルドカードで登録しておく必要があります。



以上で完了です。なお、mod_rewriteを使わずにphp等でスクリプトを書いて処理を振り分けるやり方もいいと思います。今回は勉強がてらmod_rewriteを使ってみました。 



参考
http://www.net-newbie.com/trans/mod_rewrite.html
http://tech.bayashi.net/svr/doc/apache/mod_rewrite.html
http://www.kobarin.jp/blog/MT3/archives/2005/01/virtualhost_www.html
http://webcraft.jp/asy/linux/mod_rewrite.htm

2006年9月12日火曜日

Smartyテンプレートで直接getやpost、cookieなどの値を参照する


$smartyという特殊変数を利用することで、いちいちphpスクリプト側でassignせず、smartyテンプレート側の記述のみで直接get、post、session、cookieなどの値を参照することができます。






































php

smarty

$_GET[hoge]

{$smarty.get.hoge}

$_POST[hoge]

{$smarty.post.hoge}

$_REQUEST[hoge]

{$smarty.request.hoge}

$_COOKIE[hoge]

{$smarty.cookies.hoge}

$_SESSION[hoge]

{$smarty.session.hoge}

$_ENV[hoge]

{$smarty.env.hoge}

$_SERVER[hoge]

{$smarty.server.hoge}


この機能、これまでずっと知らずいっつもassignしてました。。。