2006年4月13日(木) 1:25 作成 - 2008年7月15日(火) 0:30 更新
トップ >
きょう、やまだくんにうちに来てもらって、目の前でインストールから記事の更新までやってもらおうと思っていたんですが、インストールの時点で思いきりつまずきまくって、結局まともに記事を書いたりできないままに終わってしまいました。
まあこれはやまだくんの自宅サーバーが原因。でも、たいていの(最近の)レンタルサーバーなら、mod_rewriteに対応してるよね? 自宅サーバーとかのみなさんは知らないけど。
MySQLのバージョンと文字コードの問題。そういえば、なんかいっとき話題になってた。MySQLのバージョン的には、3.2と4.0で動作確認済みで、やまだくんの5.0だと失敗。ただしこれはバージョンにのみ起因するものではなく、MySQLのセットアップ時の問題かもしれない。
わたしのミスだったり、原因不明なままだったり、いろいろな問題が起こりました。
というわけで、やまだくんの他にこのブログツールを配布した若干名のみなさん、ちゃんと記事書くところまで行けましたか? 行けてない場合は、いまの最新版に置き換えると、うまくいったりするかもしれません。
> mod_rewriteはやまだくんの自宅サーバーが原因
これは問題のすり替えであって、"必要環境"に mod_rewrite に関する記述がないことが原因です。
要するに、"必要環境"ならあらかじめ準備をしていったのに、ということです。
> MySQLの文字コード UTF-8
こっちは、幸之介さんの問題ともいえます。テーブルを作成するときに、テーブルごとに文字コードを指定することができますから、そうしておけば、多くのサーバで同じ動作が期待できます。
他人がどの文字コードでインストールするかはわからないわけです。手元に2冊ある本のうち、一冊はEUCJPでのインストールを説明しているからです。
昨日、phpのバージョンは5.0といいましたが、5.1でした。訂正します。
管理画面からトップページに戻るためのリンクがありませんが、僕の環境だけでしょうか。
あるほうが便利だと思います。
> 管理画面からトップページに戻るためのリンクがありません
諸問題の発生している、きみだけに起こっています。
インストールまでは問題なく行きますた。
管理画面のログインで、メールアドレスとパスワードを入れてsubmitしても、ログイン画面がまた出てきました。間違ったパスを入れたらエラーが表示されたので、認証されたけど管理画面に行かない、みたいな状況だと思われます。今日は色々と萎える出来事があったので、そこでやる気がなくなって放置しますた。
4月7日版っぽいです。最新版ください。
あと、管理者のパスを生でPHPに書くのはどうかと思います。データベースにMD5ハッシュとかで記録したほうがいいと思います。
> 管理者のパスを生で
はい。
Nucleusも(mysqlのパスワードを)生で書かせていたので、甘えました。
最初にサイトにアクセスしたのが他人だった場合も、パスワードを知らなければサイトを作成できない…という、まずありえない事態を想定しての措置でした。
実際には、あのphpに書かれたパスワードはサイトを作るとき最初の一回きりにしか使っていなくて、管理者認証にはサイトテーブルに入ったmd5を使っています。
よって、あれですね、うん、ちょこっと仕様変更します。
あれれ?
でもやっぱ、むりじゃない?
データベースにパスワードを登録するには、データベースに接続しなきゃいけなくて、そのためには、データベースのパスワードが必要で、ほら。
まあ、ADMIN_PASSWORDの定数は削れても、mysqlのパスワードは、削れないね。
ソースに書くべきではないのがADMIN_PASSWORDですね。7日版ではいかにもログインに使いそうな雰囲気だったので。
なんか最新版ではサイトの新規作成時にのみ使いますってありますが、新規作成時のパスワードは果たして必要なのか微妙なところですが。
> 最初にサイトにアクセスしたのが他人だった場合も、パスワードを知らなければサイトを作成できない…という、まずありえない事態を想定
ユーザーの混乱を招きそうです。というか混乱しました。
mysqlのパスワードはどうやっても生テキストか、可逆の暗号文にして保存しなければいけないので、削れませんね。
ローカルで動くことを確認しました。気が向いたらLinux鯖の方に設置してみます。
仕事イソガシス
mod_rewriteの件
mod_rewriteが使えるかどうかPHPで判定できるっぽいです。使えなかったら個別記事のページを/index.php/hogeにすればいいんジャマイカ?
はやみずくんのいうように、/index.php/hoge にしたページはたとえば、のんびりと瑞々しく - やっと日本語を入力できるようになりました。となりますが、
アドレスバーの表示がきれいでない状態が見えます。
mod_rewriteは自分でわざわざ指定せねばならないモジュールですから、「かならず使える」という前提ではそうそうに破綻するはずです。
やまだくんが何について破綻すると言っているのかいまいちつかめませんが、絶対URLで記事を指定したりする箇所が多いので、ちょこっとの修正ではうまくいかないと思われます。
mod_rewriteって、ハードル高いのかな?
この検索結果からは、それほど多くないようにも思えるんだけど。(笑)
"mod_rewriteが使えない" - Google 検索
つ http://php.morva.net/manual/ja/function.apache-get-modules.php
これでApacheのモジュールリストを取得して、mod_rewriteがなければ個別ページのアドレスを
/hoge/
から
/index.php/hoge/
にすればいいぽ。
Apacheかそうじゃないかの判別はきっとどうにかしてできるんでしょう。知らないけど。
「mod_rewrite 使えない」ならば2万件ほど引っかかります。
トラブってる人が少ない->使用人口自体が少ない->ハードルが高い、という推測も可能ですね。
Apacheのデフォルトでは、mod_rewriteはオフになっているぽいです。設定ファイルを開いてLoadModule1行をただコメントアウトするだけでも、ハードルが低いとはいえないと思います。
結局何がいいたいかというと、多分mod_rewriteはレベルちょい高めだと思われ。
よく考えたら、当ブログツールの絶対URLは、それ用のユーザー関数で取得しているので、そこだけif(mod_rewriteあるかどうか)でやれば、ほとんどOKな気がしました。
「mod_rewrite 使えない」だと両単語が文脈的にカンケーないページも引っかかるので。"mod_rewriteが使えない"だと漏れもたくさんあるわけですが、真の値を推定しやすいのは"mod_rewriteが使えない"で検索したときの結果数かと。
「LoadModule1行をただコメントアウトする」こと自体は、一般の人から見れば大変な障壁ですが、コメントアウトすることが可能な人って言うのは、自宅サーバーとかやってる人なので、そういう人を母数にすれば、まぁそんな難儀ではないだろうという気がするのです。
いかがでしょうか。わたしはその母数に入らないので、そういう人にとって、モジュールの追加がどれだけ難儀なのかは知らないのですが。やまだくんが苦労する様子は見ましたが。(笑)
おそらく、最近の一般のレンタルサーバーなら、mod_rewriteに対応しているのがふつうだと思うのです。ザッとだけ検索したところ、やはり対応がふつうの様子。大手で対応していなかった「さくら」がついに2005年4月に対応した、という雰囲気らしい。
まあ、実際、mod_rewriteが使えない場合の代替策としては、 .../index.php/1/ とかやるよりも、itemというファイルを作って、拡張子なしのファイルをphpとして動作させるように.htaccessに書いて、 .../item/1/ とやるのが、ひとつ階層が増えちゃうけど、見た目にはまだ美しいね。
XAMPPとかでなんとなくサーバー立ててしまった人は、httpd.confとか書き直せるのか微妙です。
まあ、サーバー設置のblogなんて大抵はレンタルサーバーに置くと思うのでたいした問題にはならないと思いますが。
わたしはXAMPPとかでなんとなくローカル環境を作ってしまった人ですが、mod_rewrite関係をいじった覚えはないです。
僕は一行追加しただけなので、たしかに書き換えは簡単でしょう。
そもそもモジュールがインストールされていないという問題があるから、コメントアウトするだけというわけにはいかないのだよ。
おまけに、デフォルトでoffということは、必ずしも、そのように書いてあるとは限らない。まったく記述がないか、onをコメントアウトしているかの可能性がある。
モジュールのインストールは過去に一度でも経験があれば、簡単だと思われます。過去に経験のないことは、いつでもああいうものです。最初にapacheのインストールをしたときには一週間くらいかかりました。
操作手順を僕の覚えている限りで、Webに公開することは可能です。あくまでも、「こうやったらできた。」という程度のものですが。
ところで、僕のサーバは拡張子なしでphpとして動作するようにできていましたが、(過去形なのは今はそうではないから。)
何かがうまくいきませんでした。
おととい試したことは、http://yatt.net/php_info/sldofとしたことで、ただしく認識はしているようです。
ためしに、http://yatt.net/php/sldofとしてみると、ただしく働いてくれないことが原因だと思われます。
(比較http://yatt.net/php/index/sldof/は正しく働きます。)
Not Foundと表示されることから、きれいなディレクトリだと判断しているように見えます。
というわけで、knoablog/index/1/という形式に書き換えてみました。
> わたしはXAMPPとかでなんとなくローカル環境を作ってしまった人ですが、mod_rewrite関係をいじった覚えはないです。
(゜д゜)マヂデ
今まで自宅のLinux(fedoraでyumったapache)とかWindows(Windows用インストーラーのapache)とかノートのWindows(XAMPP)とか計3台のApacheのhttpd.confを書きまくってるので、XAMPPはデフォルトでmod_rewriteがonなのかもしれない。
ところで、Googleは/index.php/fooと/index.php/barを別のページとみなすんでしょうか、みなさないんでしょうか。
> XAMPPはデフォルトでmod_rewriteがon
ちと自信なくなってきた。自分でコメントアウト消したかも。ただ、XAMPPをインストールするレベルなら、コメントアウトを消すことくらいはわけないであろう。
> /index.php/fooと/index.php/bar
別のページと見なしますよ。ただし、内容がソックリだとダメです。
よく言われる、?付きのURLはSEOに弱いってやつも、内容の違うページであって、そのページにたどり着くためのナビゲーションやサイト構造がしっかりしていれば、大丈夫です。
site:knoa.jp 公開メモ日記 - Google 検索
コメントアウトでやっかいなのは、文書によってコメントアウト用の記号が違うことです。
正しく動作しました。
RewriteEngineの挙動がおかしかったことの原因は、僕の設定のせいでした。
普通だったらWebサーバとしてのルートディレクトリを~/html_publicとして、そのディレクトリ以下を全て公開、(パーミッションの設定次第で非公開にもできるが)、ルートディレクトリ以外を非公開という設定なのですが、
僕は、ルートディレクトリの外のディレクトリに対してaliasを書いて、ディレクトリknoablog/を公開していました。
今日、ホームディレクトリの中にknoablogを入れたところ、幸之介さんの意図する動作が実現できました。
URLも元に戻しておきました。
こういう設定ができる人もたまにはいるので、注意として加える必要があると思います。
昔話題になっていた「確認」機能ですが、
僕はこの機能に8回ほどひっかかりました。
今後も何度もひっかかると思います。
> 昔話題になっていた「確認」機能
なにそれ。
はやみずくんが昔言っていませんでしたっけ?
コメントを書き込むにしても、新しい記事を書くにしても、一度「確認ページ」にとばされて、それ自体が割ときれいな表示だから、よしよしとそのままにしておくと、書き込みが反映されなくて、あとで書き込みし直す必要がでるというあれです。
日本語入力問題はMySQLのバージョンによる問題であると判明しました。
MySQLと日本語の問題 -- 2006年4月22日
4.0までと4.1以降は差が大きいようです。
おおっと、いつのまにか、Googleから技術的なキーワードでたどり着く人がちらほら現れているじゃないか!
お役に立てていますでしょうか?
トップ >