MT iswebベーシックでPHP化

まだまだカスタマイズの途中ではありますが、iswebベーシックで、PHPの機能を使うことができるようになったので忘れないうちに書いておくことにしました。

その必要性は、Individual Archive を修正した後リビルドすると、サーバーエラーが多くなり始めていたから。個別エントリのリビルドは、サーバーに高負荷を与えるらしいということをいろいろ検索していて知りった。あまりIndividual Archive をいじらない方は必要ないかもしれませんが、PHPのことを知ったお陰で、私はまたいろいろなことに挑戦したいと思いはじめたのです。

そしてコンピュータは全く無知な私が、このサーバー設定では大変な想いをしたので自分自身の覚書のためにと、手順をまとめておこうと思います。今回はまだ断片的ですが、そのうち一つにまとめようかと・・・

  • iswebベーシックでのPHP機能詳細
    iswebベーシックのMovaleType導入手順

  • iswebベーシックでPHPの機能を使うためには、
    ファイル名を .php という拡張子ではなく .cgiという拡張子にし、一行目に
    #!/usr/local/bin/php
    という記述をする
  • 【cgi-bin/】の中に、【mt/】と同階層に【blog/】を作る。ローカルフォルダに【blog/】を作ってからアップしてもかまわないし、アップしてからFTPソフトで、サーバーの【cgi-bin/】の中にを作ってもかまわない。【blog/】のパーミッションは、iswebベーシックのcgi設定の規定通りに変更しておく。
  • また、【blog/】は、サイトURLとなるフォルダであるから、【ブログの設定】→【基本設定】で、Local Site Path、Site URL、Local Archive Path、Archive URL 
    を変更しておく。
  • 拡張子を変更した index.cgiindex.html の代わりに
    ブログのトップページに表示させるためには、htaccess というファイルが別に必要。
  • htaccess ファイルの作り方
    テキストエディタで以下の記述をし、ファイル名は isweb_htaccess.txt として保存する。

    DirectoryIndex index.html index.htm index.php index.cgi

    (改行なし)

  • 保存した isweb_htaccess.txt をFTPソフトで【blog/】にアップし、
    FTP後は、サーバーにある isweb_htaccess.txt ファイルの名前を 、isweb_htaccess に変更。(拡張子無し) 【blog/】は、リビルドすると新しくindex.cgi が生成される場所で、それと同じ場所にアップするということ   isweb_htaccessファイルは、サブフォルダまで有効。
  • 【ウェブログの設定】ページの真ん中辺にある【アーカイブの設定】欄で、Archiveファイルの拡張子を html から cgi に変更してSAVE(保存)。
  • 次は、テンプレートの修正。
    .cgiという拡張子にするものは、インデックステンプレートでは、
    Main Index (index.html) 
    Master Archive Index (archives.html)
  • アーカイブリレイテッドテンプレートでは
    Category Archive
    Date-Based Archive
    Individual Entry Archive
    の合計5つのテンプレート。
  • インデックステンプレートでは上掲二つのテンプレートのみ、出力ファイル名の拡張子を.cgiに変更し、一行目に #!/usr/local/bin/php を記述して、SAVE(保存)する。
  • アーカイブリレイテッドテンプレートの3つは、一行目に #!/usr/local/bin/php
    を記述して、SAVE(保存)する。
  • 次に、【ブログの設定】→【ウェブログの設定】をクリックして、【ウェブログの設定】ページの真ん中辺にある【アーカイブの設定】欄で、Archiveファイルの拡張子を html から cgi に変更してSAVE(保存)する。
  • そしてリビルド(全てをリビルド)する。すると【blog/】の中にインデックスファイルなどが、【blog/archives/】の中には個別、月別、カテゴリ別などの各エントリ全てが
    .cgi 拡張子のついたファイルとなって新しく出来上がる。FTPソフトでその .cgi ファイルのパーミッションを全て、サーバーのCGI設定の通りに変更。
  • MainIndexの拡張子を変更する前にリビルドすると、【blog/】のなかにindex.html が生成されているので、もしあったら削除。これが残っていると、isweb_htaccess に記述したとおり、これを優先して表示してしまうので、PHP機能がエラーとなる。
  • 【cgi-bin/】の中でなく、別のディレクトリに作っておいた以前の【blog/】に、以前のエントリは残っているので、そのままにしておけばリンク切れは起こらない。
  • インデックステンプレートの2つ、アーカイブテンプレートの3つを保存して、リビルドした後や、エントリの新規作成、編集後にはパーミッションの設定が元に戻る。よってその都度、パーミッションの変更が必要となる。
  • iswebベーシックでMTのPHP化その2は、インデックスファイルなどから切り離したPHPファイルについてと、それを代入する手順をまとめたいと思う。
    それから他に、やりたいこと・・・・PHPのカウンター設置と、カテゴリページなど長くなるページの分割化。

    11月16日追記
    パーミッションがリビルドの度に戻ってしまう件について、iswebベーシックのサポートに今日質問したが、今日のうちに回答があった。

    【状況】自分自身でリビルドする場合はすぐにパーミッションを変更できるが(それでも面倒いですが)、困るのは、第三者によるコメント投稿時。これはメインインデックスからコメント投稿する場合には、結果がすぐに表示されるのでコメントが完了したことを本人は確認できるが、アーカイブからのコメント投稿では、リビルドされてパーミッションが元に戻ってしまい500エラーとなり、投稿者本人は投稿が完了したことを確認できない。

    メインインデックスに表示される日数のアーカイブなら、メインインデックスまで戻れば確認できるが、それ以前の古いアーカイブへのコメント投稿は、投稿が完了したかどうか、管理者の私がパーミッション変更するまで全く確認できないことになる。そこでリビルドしてもパーミッションが元に戻らない方法はないですか、と質問した。

    【回答】
    ご質問のような「リビルド時にパーミッションが元に戻ってしまう」場合、リビルド完了後にパーミッションを設定するよう、スクリプトを修正(改造)して頂くのはいかがでしょうか。パーミッションが元に戻ってしまう現象は、スクリプト側で古いものを一度削除している可能性があります(リビルドの為)。解決する方法としては、リビルド処理完了後に、スクリプト側でパーミッションを改めて設定するように修正する方法が考えられます。・・・・・後略

    あちゃ~、そんな事言ったって私には専門的なことはわかりませんじゃ。スクリプトなんて分かりませんからネ。ということで私にはこの状況を解決できません。もし古いアーカイブにコメント投稿してくださる方があったら、500エラーとなりますが大抵は投稿が完了していると思いますので、悪しからずご了承ください。