ワイ「課長、今回こそオンプレにしましょうね」 課長「56すよ」
今日はね、ロリポップサーバーさんが、ドメイン直下(root)の「index.php」を実行できずにダウンロードしちゃう原因と改善方法を探しまくったよ。
どこのサーバーでも、たまに変な動きをしてハマっちゃう事はあるけど、今回のはコッチ側から改善するのは無理そうなのよね。
Nginx(エンジンエックスって読むよ)を使っているケースでは「php」は実行できないので、「Nginx」が「php」を実行できるようにいろいろやらないと「index.php」をダウンロードしちゃうんだよね。
ロリポは「Apache」だから無関係だとは思うんだけど?なんでなんで???
仕方ないので強制的に「php 実行しろや!このボケ!」って命令を「.htaccess」作って書いて、ロリポサーバーの設定で「.htaccess」を有効にしたらなおったんだけど、今度はWEBサーバー?のキャッシュを常に返すようになっちゃって「なんじゃこりゃ?」になったわ。
「.htaccess」さんに書いた2行
AddType application/x-httpd-php .php .html
AddHandler application/x-httpd-php .php .html
サーバーキャッシュで沼る、沼る。
困ったことにサーバーキャッシュと思われるデータは何時間たっても更新されず、テスト用に放り込んだ画面を表示し続ける地獄絵図・・・
いろいろ試して解ったのは、ドメイン直下(root)の「index.php」を「https://hogehoge.com/index.php」ではなく「https://hogehoge.com/」のようなファイル名を指定しないURLで表示させようとするとサーバーキャッシュを読んでしまう。
更新されないサーバーキャッシュを生成してしまうは「index.php」を「https://hogehoge.com/」のようなファイル名を指定しないURLで呼び出した1回目だと思う。※内部の挙動はこっちからは確認できないから厳密にはわからないね。2つの独自ドメインで確認したけど、同じ動作をしているので再現性は高いのよ。
「https://hogehoge.com/」で更新されないサーバーキャッシュを読んで「http/1.1 200OK」で返してしまうのはとても困るのよね。※「https://hogehoge.com/index.php」では正常稼動する。
「index.php」を削除してもドメイン直下(root)を空にしても「http/1.1 200OK」を返してしまうアホ仕様・・・
ドメイン直下(root)に「index.html」を入れるとちゃんと読んでくれる。でも「index.html」を削除して「index.xxx」系のファイルが何もない状態でもサーバーキャッシュを読んで「http/1.1 200OK」を返してしまうアホ仕様・・・
※ちゃんとブラウザのキャッシュ削除してる?アッタリメェヨ。全期間削除してるわ。複数の異なるブラウザ、異なるPCで試験しても同様の現象。
「index.html」ならちゃんと読んでくれるなら、こんな荒行なら「php」実行できるかも?と思って、「.htaccess」にさっきの追加した2行「AddType」「AddHandler」を削除して、次の2行を書いて「index.php」を「index.html」にしたら、魔法がかかって「index.html」と言う名の「php」を実行してちゃんと表示できたぁ~。
「.htaccess」さんに書いた2行
AddType application/x-httpd-php .html
AddHandler application/x-httpd-php .html
※こないな設定で運用できないので「.htaccess」はからは削除してますよ。
ロリポサーバーが単なる「Apache」なら「php」が実行できないはずはない。
でも、もしこの現象が「WordPress」でも同様に起こるなら、っていうか「WordPress」もドメイン直下(root)に「index.php」を配置するので起こるはず?
ユーザーが「更新したけど表示変わらない!ウキィウキィ!」って大混乱になるので、「WordPress」では起こらないように何らかの設定をしてるはずだよね。
問題は、その設定を「WordPress」インストールしたときのみ設定して、「WordPress」を入れていない状態のドメイン直下(root)の「index.php」は「https://hogehoge.com/」のようなファイル名を指定しないURLで参照にいくと正常に動作しないって事になってるんじゃない?ことなの。
あやしいのは「ロリポップ!アクセラレータ」って機能が入ってて、どうやら「WordPress」の出力した「html」をキャッシュして表示するって独自機能があるんです。
お客様のウェブサイトの表示内容を、「キャッシュサーバー」に一時的に記録(キャッシュ)し、同じウェブサイトにアクセスがあった場合、キャッシュサーバーから応答します。お客様へ提供している同環境におけるテストでは、WordPressで制作されたサイトで【24倍】(※)のパフォーマンス改善がみられました。
ロリポップ!アクセラレータのマニュアル
引用元 ロリポップ!アクセラレータ
現象が発生した環境では、独自ドメインの設定時に「ロリポップ!アクセラレータ」は「off」指定、現象の確認のため独自ドメイン設定後に「on」「off」を何度か繰り返す。また、独自ドメインをロリポコンソールで削除してディレクトリもFTPで消して、再度、独自ドメインを設定しての現象確認、ロリポップ!アクセラレータ画面の「キャッシュ削除」ボタンを複数回、異なるタイミングで実行などの現象確認、改善を試みるも更新されないサーバーキャッシュは消えないよ。
いろいろ試した結果、サブディレは「index.php」を配置して「https://hogehoge.com/aaa/」のようにURLを指定するとちゃんと実行できるのね。
また、ファイルを直接指定したフルパスのURLもちゃんと実行できてる。
https://hogehoge.com/index.php
https://hogehoge.com/hogehoge.php
https://hogehoge.com/aaa/index.php/
一方「https://hogehoge.com/」の更新されないキャッシュは「https://hogehoge.com/?abc」のように引数をつけても現象は変わらず、「https://hogehoge.com/?20240924235959」引数を毎回変更してもつけても現象は変わらないよ。
問題を起こすのはドメイン直下(root)の「index.php」を「https://hogehoge.com/」のファイル名を指定しないURLで参照にいくと「index.php」が実行されない。
これたぶん「WordPress」をキャッシュ化するために、ルートだけ特殊な処理が入っているか?またはサブディレに入れている処理をルートに入れ忘れてるか?のどっちかのバグか?
もしくはサーバーの構成設計者がどうにもならなくて「正常稼動しないのは、「WordPress」のインストールがない状態でのドメイン直下(root)の「index.php」を「https://hogehoge.com/」のようなファイル名を指定しないUR参照したときだけで、いまどきドメイン直下(root)に「index.php」を設置するのは「WordPress」ユーザーだけだろう」ということを上と相談して「この仕様で「WordPress」が高速化されるならこれで行けって」ってゴーサインもらっちゃってるか?どっちかだと思うのよね。※違ったらごめ~ん。
どっちにしても、2024年9月のロリポサーバーでは、ドメイン直下(root)に「index.php」を配置して「https://hogehoge.com/」のようなファイル名を指定しないURLで表示しようとすると「index.php」は正常に動作せずキャッシュを読んでしまうバグがあるのは確定案件でした。
◆現象1 ドメイン直下(root)の「index.php」を実行できずにダウンロードしちゃう現象の確認方法。
◆現象2 更新されないキャッシュの再現方法。
ちゃんとロリポさんにも障害報告しましたよ。ロリポさん調査中ですよ。
2024年9月26日ロリポさん、障害の再現・調査をせずに『「AddType」「AddHandler」を書くと処理対象として認識できないケースがある。』と意味不明な回答をしてきたよぉ。
◆現象1 は「.htaccess」使ってないのぽ。
ロリポおじさん泣いてるぽ。
つれづれなるままに、日暮らし硯に向かひて、心にうつりゆくよしなしごとを、そこはかとなく書きつくれば、あやしうこそものぐるほしけれ。
手持ちぶさたなのにまかせて、一日中すずりに向かって、心に浮かんだり消えたりしてうつっていくつまらないことを、とりとめもなく書きつけると、妙に正気を失った気分になる。
ひまだよね。一日中YouTubeみて、笑ったり考えたりするつまらないことを、とりとめもなくラインしてると、妙に現実逃避できる。
そういう事?
昔も今も変わらないんだねぇ。
ワイ「課長、サーバー評価1件おわりましたぁ」
課長「お前の仕事は新規制作用のサーバーの手配じゃなかったっけ?
56すぞ!」
(*´Д`)
※ロリポップのハイスピードプランと同価格帯の他社のサーバーにテスト用のWordPressサイトを設置し、レスポンスタイムを計測したグラフ。
計測期間は2023年7月9日〜14日。WordPressに同一のテストデータをインポートしたサイトへ外部の同一環境から接続。
各社、無料で利用できるCache機能を有効にした状態でレスポンス速度を計測。
レンタルサーバーでIP分散(クラスC分散)実現するよ レンタルサーバーでIP分散(クラスC分散)実現するよ・・・ 続きを見る |
|
ロリポサーバー「index.php」ダウンロードされる【2024年11月】 ロリポップサーバーでドメイン直下の「index.php」が実行できないウンロードされる。更新されないサーバーキャッシュを未来永劫表示し続ける・・・ 続きを見る |