php化したMTにアクセス制限をかけたらエラーが出た件について [ 2006年04月19日 ]
ブログを使って個人的な判例・文献データベースをつくろったのだが、アップロードする予定のファイルの著作権の問題などから.htaccessを使ってアクセス制限をかけようとしたところ、phpで呼び出そうとしたエントリー本文と追記のモジュールがうまく読み込めずに次のようなエラーが出る。
Warning: main(http://.../entry***-body.php): failed to open stream: HTTP request failed! HTTP/1.1 401 Authorization Required in /home/sites/lolipop.jp/users/.../***.php on line 67
Warning: main(): Failed opening 'http://.../entry***-body.php
' for inclusion (include_path='.:/usr/local/lib/php:/usr/local/lib/php/Smarty') in /home/sites/lolipop.jp/users/.../***.php on line 67
.htaccess自体はロリポップのユーザーページで生成したものだし、認証自体はうまく機能しているので、.htacccess自体の問題ではなさそう。
.htaccessを削除すると問題なく本文は表示される。
文系人間の手には余るので、ロリポップのサポートに次のようなメールを送った。
はじめまして。
いつも快適に利用させていただいています。
Movable Type 3.2で複数のブログを運営しているのですが、そのうち一つにアクセス制限をかけようと思い、WEBツールからブログの公開フォルダに制限をかけました。(www.***.com/***/というフォルダです)
私のブログは一部をphp化していて本文などをincludeで読み込む形式にしているのですが、その部分で以下のようなエラーが出ます。
Warning: main(http://.../entry***-body.php): failed to open stream: HTTP request failed! HTTP/1.1 401 Authorization Required in /home/sites/lolipop.jp/users/.../***.php on line 67
Warning: main(): Failed opening 'http://.../entry***-body.php
' for inclusion (include_path='.:/usr/local/lib/php:/usr/local/lib/php/Smarty') in /home/sites/lolipop.jp/users/.../***.php on line 67
アクセス制限を解除すると表示は正常に戻ります。このブログは一般からのアクセスができないようにしたいのですが、どうしたらよいでしょう?
日本時間の翌日にサポートから次のようなメールが来た。
この度はお問い合わせ頂き、誠にありがとうございます。
ご連絡の件に関してです。
特に、お調べしたところ、MovableTypeのご利用と、
アクセス制限に基づくサポート特別にお取り扱いございません。
お客様のご確認の通り、アクセス制限を解除した環境でご利用可能の場合、
原因は、サーバーではなく、アクセス制限設定が原因となります。
お手数ですが、お客様のアクセス制限仕様条件が分かりかねますので、
参考書籍、ガイダンスHP等ご覧のうえで、設定編集を宜しくお願いします。
本件に関しては、お力になれずに、申し訳ございませんでした。
・・・っていうか日本語の意味がわからん。「アクセス制限使用条件が分かりかねます」って、おたくのユーザーページからマニュアルに従って設定したんですけどぉ・・・
これは埒があかないと思って、ぐぐってみると呼び出すときの記述方式をhttp://user:pass@localhost/... の形にして、もう一度認証を通す形式にするといいようなことが書いている。
ただ、これだと複数の認証は使えないなぁ・・・と思いつつ背に腹は代えられないので、まずMTのタグを使って上の方式を記述する方法を考える。
今はinclude文で<$MTBlogArchiveURL$>を使っているが、これだとhttp://からブログパスまで一気に出力されてしまうので、間にuser:pass@を入れることができない。
そこで、とりあえず相対パスで指定する方法が採れないか考える。そこで気づいたんだが、MTでは<$MTBlogArchivePath$>というタグは使えないらしい。(fileが見つからないというエラーが出る)
そこで、<$MTBlogArchiveURL$>を<$MTBlogSitePath$>archives/に置き換えて様子を見てみると・・・あれ?認証用のuser:pass@を入れなくても、includeさせた部分がうまく表示される??
絶対パスではなく相対パス指定だと認証の効果が係属するということなんだろうか??
細かい仕組みはよく分からないが、とりあえずメイン、個別エントリー、カテゴリー用の各テンプレートの<$MTBlogArchive$>を全部<$MTBlogSitePath$>archives/に置き換えた。
とりあえず、これでうまく言ったので一安心・・・それにしてもロリポップのサポート・・・日本語の意味も分からないし、解決の手がかりすら与えてくれないとは・・・うーん、もうすぐ契約も切れるし、サーバー移転を本気で考えようかな・・・でも、面倒くさそうだなぁ・・・
このエントリーのトラックバックURL:
http://WWW.ny47th.COM/mt/mt-tb.cgi/349
良いゲームだったとはいえ Milan が Barça に負けちまいましたがそれはさておき。
サポートのメールからは「症状から見るとサーバー自体の不具合ではなく、お客様の設定ミスだと思われます。 また MovableType に関する設定につきましては(懇切丁寧な)サポートの契約は結んでおりません。当方ではどのようにカスタマイズされているか分かりかねますので、不具合は御自身で対処願います。」と宣っているように見えます。
> <$MTBlogArchiveURL$>を<$MTBlogSitePath$>archives/に置き換えて
> 様子を見てみると...あれ?
と言うことは include される file が URL で指定されているのならば (サーバー側が?) 別の (Virtual-)host にあるものをアクセスしているとみなしているだけなのかもしれません。もしその場合は、相対 path を指定すれば同じ host のものであることが保証されるので、そのような勘違いは起こり得ません。ですから上の対処で大丈夫です。
#php 化等も含めて、ちゃんと対処されている所を見ると理系も文系も関係ないんじゃないでしょうか。
#あとは土地勘さえあれば。
それにサポートに定型的ではない問題を投げるのは無理な気が...しなくもないです。メーカーさんでさえサポート人員を自社で抱えていない所もある御時勢ですから。
P.S.
もう少し正確に言うと http 接続をいったん切断した場合、そこで全ての状態は破棄されます。ですから、その時点でもう一度接続する際に http の認証をしなくてはなりません。普通は browser のほうが覚えていて新しく connection を張るときにもう一度認証を自動で行うのですが、ここでは server 自身でなんか変な事をしているような気がします。
Posted by 小僧 : 2006年04月30日 08:22
>小僧さん
映像ではなくテキスト中継のみだったんで、今ひとつ分からなかったんですが、少なくとも2d Reg後半は押し気味に見えたんですけどねぇ・・・
まあ、あとは逆転スクデットに向けてですね。
とかいって、日曜日にユーヴェ戦と二元中継しているイタリア語放送を見ていたんですが、開始10分でユーヴェが3点ぐらい入れて萎えました・・・あと2戦、どうなることか。
トラブルの方は、サーバーが原因なのか、自分の方の原因なのかが判別できないのがつらいんですよね。
大昔、Basicプログラムのバグをとっていた時の気分で、少しずつ原因を特定してというのをやってはみるんですが、サーバーがどう働いているのかが今ひとつ分かっていないので、隔靴掻痒の感があります。
ただ、こういうのを経験するに、サポートの重要性を感じます。金融商品の販売(引受)とFPが独立したサービスになっていったように、個人単位でのシステム設計みたいなものに対するプランナーの需要もそのうち出てくるんでしょうね(それとも、もう結構あるんでしょうか?)
Posted by 47th : 2006年05月02日 00:12
コメントしてください