当サイトは、Hawk Hostという(多分)カナダの会社が運用しているサーバに存在している。Hawk Hostは、私がサイトでやりたいことをおそらくもっとも安価に実現出来るサーバであり、この会社のおかげで私は海外サーバにポジティブな印象を持っている。『文系のための海外サーバ入門』というサイトまで作るほどに。
ところがここ一カ月で、そのポジティブな印象という貯金が一気に吐き出されてマイナスに転じるような出来事が起きた。
きっかけは、Hawk Hostから送られてきた一通のメールだった。確か、
MySQLのセキュリティを高めるためにサーバを変更します。IPアドレスは変更にならないので、あなたは特になにかをする必要はありません。
といったことが英語で書かれていたと思う。
あ、そうなんだと日々過ごしていたら、ある日、HTMLで書いたページにアクセスするとエラーになることに気がついた。『ZEROの法則』やら『さっか道』やらが全滅である。
こちらでいじった記憶はなかったので、Hawk Hostのサポートにエキサイト翻訳を駆使して、「なんかエラーが出て表示されないんだけど?」と送ったら、しばらくして返事が来た。
拡張子が.htmlのファイルでPHPが使えるようにしていますね。.htaccessに
AddType application/x-httpd-php .php .html
ではなく、
AddHandler fcgid-script .html
FCGIWrapper /usr/local/cpanel/cgi-sys/php5 .htmlと書いてください。
どうも、サーバが変わったことでシステムも変わったらしい。日本人の感覚だと、「古い物が新しくなった時でも、古い設定をそのまま使える」、つまり互換は守られるというのがあるが、カナダ人は違うのだろうか。
私は一応、Hawk Hostのマニュアル、フォーラム、ブログを一通り見てみたが、
AddHandler fcgid-script .html
FCGIWrapper /usr/local/cpanel/cgi-sys/php5 .html
なんてどこにも書かれていない。というか、Googleによると世界中のページの中に上記の記述は7件ぐらいしかない。
釈然としなかったが言われた通りに書き換えた。
ところがまだエラーが出るので、再びエキサイト翻訳を使って聞いてみると、.htaccessの記述がおかしいと言う。「こちらで直しましたのでアクセス出来るはずです」ということなのでアクセスしてみたら、確かにページが表示された。.htaccessのなにがおかしかったのか、サーバからダウンロードして確認してみると、
#php_value mbstring.internal_encoding UTF-8
といった風に、PHPの設定が#で軒並み無効にされている。「いやいや、これ、前は出来たよね?」と聞きたくなると同時に、「じゃあ、この設定はどこでやりゃいいんだよ」という疑問が湧いてきた。PHPの設定が無効になったことによる問題も一部記述の文字化けという形で発生していたので、その辺を聞いてみると、
.user.iniというファイルを作り、そこにmbstring.internal_encoding UTF-8と書いてください。
という答えが返ってきた。
なんで唐突に「.user.iniというファイルを作り」ということになるんだよと聞きたくなったのは利用者として当然であろうと思う。
百歩譲って、セキュリティ向上など、なんらかの理由により、以前出来たことを出来なくしたというのはありとしても、代替方法を事前に周知するというのがサーバ運営者に求められるものだろう、と日本人の私は思う。これだけ根本的な、しかも事前に説明のない変更であれば、ユーザが阿鼻叫喚になってもおかしくないと思うが、フォーラムには特に意見は出ていない。他のユーザはついていけているんだろうか。
で、昨日、また問題が起きた。
それは特定のファイルにアクセスする場合のみベーシック認証をかけると、そのファイルが存在するディレクトリ、及び下部のディレクトリにあるすべてのファイルへのアクセスがエラーになるというものだ。
なので、プログラムの管理画面にアクセスする場合のみ、ベーシック認証させるという風にしているのに、閲覧者がそのプログラムの管理下にある他のページにもアクセス出来なくなってしまう。
つまり、
Aというディレクトリにbとcというファイルがあり、bにアクセスした場合のみベーシック認証画面が出るようにすると、cにアクセスした時にエラーになるということだ。本来であれば、cはなんの影響も受けないのはずなのに。
AuthName hoge
AuthType Basic
AuthUserFile /home/.htpasswd
<Files b.cgi>
Require user hoge
</Files>
.htaccessにこんな風に設定するのだが、前は問題がなかった。
サポートに「一つのファイルにベーシック認証を施すと、そのファイルが存在するディレクトリへのアクセスが出来なくなるんだけど」といった感じで聞いてみると、実例を出してくれというので、検証用のディレクトリを作り、「ほら、ベーシック認証の設定がないディレクトリのファイルにはアクセス出来るけど、してある方のディレクトリのファイルにアクセスしようとするとエラーになりますよね」と書き送った。
サポートの人は「ああ、確かにそうなりますね。解決に取り組みます」と納得してくれた。そして、今日返答が来た。
問題を解決したので、昨日あなたが提示したページにアクセスしてみてください。
どれどれと思ってアクセスしてみると、.htaccessを置いたディレクトリにある、どのファイルにアクセスしてもベーシック認証画面が出るようになっている。この時点でもう駄目だなと思い、一応、.htaccessをサーバからダウンロードして確認してみると、
AuthName hoge
AuthType Basic
AuthUserFile /home/.htpasswd
#<Files b.cgi>
Require user hoge
#</Files>
となっていた。
これのどこが私の問いに対する回答なのか教えてくれ。
実は今回のサーバ変更で変わったことは他にもある。結果、今まで表示されていたページが表示されなくなった。どこが変わり、どうすれば再びページを表示させられるのかたのかという情報は一切ない。こちらで変更点を確認するたびにエキサイト翻訳を使って質問を行った。
サーバを変更すると同時にシステムも変更する、以前の設定は使えなくなるが、そのことについての説明は事前に行わないというのがこの会社独自の考えなのか、それとも、海外サーバ全体に言えることなのかはわからないが、少なくとも、海外サーバではそういうことがあるということだけははっきりした。
というかまあ早い話、いまどき、皆、サイトは全部CMSで構築していて、私のように古い形態のページを維持するために細々カスタマイズするということはほとんどやってない、だからサーバのデフォルトの設定ですべて動く、よって根本的に変えても影響はないだろうってことなんだと思う。