ディレクトリ配下のファイルすべてに PHP スクリプトを適用する方法

シェアする

『PHP サイバーテロの技法──』より

PHPサイバーテロの技法―攻撃と防御の実際から、まだまだネタを引っ張ります。この本からはネタがいくらでも引き出せます。良書ですね。

ただ、あまりセキュリティ関連の情報を引用すると、この本の購読者が減るかも知れないので、抑えておきます。Web アプリケーションのセキュリティに関心がある人は PEAK XOOPS Support&Experiment – XOOPS site for my test and support を熟読しましょう。

ということで、今回は軽いネタ。

「.htaccess に一行書くだけで、ディレクトリ配下の PHP ファイルすべてに同じ PHP スクリプトを適用できる」

すべてのファイルに「条件付きGET」

ちょうど、小粋空間: PHP ファイルアクセスによるサーバ負荷を削減する という記事がありました。百億万回読むに値する「条件付きGET」のススメ – Ogawa::Memoranda を判りやすく検証しています。

MT などのいわゆる「ブログツール」は「テンプレート」という仕組みがあります。一度テンプレートに記述した (X)HTML や PHP スクリプトなどは、そのテンプレートから生成されるファイルすべてに適用されます。上記の「条件付き GET」も同様に、必要なテンプレートに記述すればいいわけです。

さて、ブログツールが作ったわけではない PHP ファイルが、あるディレクトリに 100 個あるとして、そのすべてに「条件付き GET」のスクリプトを適用したい場合は、どうすればいいでしょうか? (注 : その場合は、別の方法で「条件付き GET」が適用できそうですが、まぁ、空気を読んで見逃してください)

テキストエディタの置換機能を使う? 何かスクリプトを組む?

──それもいいですが、もっと簡単な方法があります。

あったか .htaccess に混ぜるだけ!

実は、.htaccess ファイルに

php_value auto_prepend_file "/path_to/hoge.php"

と一行書くだけで、ディレクトリ配下の PHP ファイルが読み込まれる際に、自動的に /path_to/hoge.php が実行されます。「え、マジで?」 ──マジで。ということで「条件付き GET」の部分だけ記述した hoge.php を用意するだけです。

──えっと、うん。たぶん、もの凄い常識というか、パフォーマンス的にどうなん? という感じですが、ちょっと感動。

php.ini が変更できなくても

常識ついでに──PHP の設定は“php.ini”に書くのが通常ですが、レンタルサーバでは変更できないことが多いです。でも実は、.htaccess に書いて設定することもできますよ(ただし変更できない設定もあり)。

ref.: 【 ほでなすPHP 】 PHPのインストール -> 「.htaccess」ファイルでの設定

「register_globals問題」が気になる人は、.htaccess に下記を記述することを検討してもいいでしょう。

php_flag register_globals Off

ref.: register_globalsとは – はてなダイアリー

(例によってよく解らないまま書いてます)

スポンサーリンク

シェアする

フォローする