アシアルブログ

アシアルの中の人が技術と想いのたけをつづるブログです

PHPの開発時になかなか使えるauto_prepend_file設定

こんにちは、中川です。

PHPの開発を行っていると、自分の開発用だけの便利関数や、一時的な設定・各種パラメータの変更を行いたいなどあると思います。
そんな時に、実際のプロジェクトファイルに追加してしまうと、
本番環境に誤ってそのままコミットしてしまったり、他の開発者にはゴミ扱いされたりとなかなか大変ではないでしょうか。
そんな時に便利な auto_prepend_file という設定をご紹介したいと思います。

PHPにはメインファイルの前に、自動的に付加するファイル名を指定する、
auto_prepend_fileという設定があります。
これを使えば、プロジェクト内のファイルには一切手を加えなくても、PHPで前処理を行うことができます。
※なお、プログラムの後処理を加えたい場合は、auto_append_file という設定もあります。

設定自体は非常に簡単で、apacheのconfigファイルもしくは、.htaccessに以下のように指定するだけです。



php_value auto_prepend_file /path/to/my_prepend.php


これで、実際の処理のプログラムの実行前に上記で指定したファイルを読み込んでくれます。
私がよく使うのは以下のような感じになっていたりします。

■my_prepend.php


<?php
// print_rのショートカット &pre追加
if (!function_exists('pr')) {
  function pr($var, $pre = true) {
    if ($pre) {
      echo "<pre>";
    }   
    print_r($var);
  }
}

// 以下必要に応じて書き換えています。

// 接続元IPアドレス偽装
#$_SERVER['REMOTE_ADDR'] = 'xxx.xxx.xxx.xxx';

#$_SERVER['HTTP_USER_AGENT'] = 'hogehoge user agent';

// パラメータの強制変更(デバッグ用など)
#$_POST['hoge'] = 'foo';
#$_GET['aaa'] = 'bbb';


// xhprof( http://pecl.php.net/package/xhprof )でのプロファイリング用
function __xhprof_finish() {
  $xhprof_lib = '/var/www/xhprof/xhprof_lib';
  require_once($xhprof_lib . '/utils/xhprof_lib.php');
  require_once($xhprof_lib . '/utils/xhprof_runs.php');

  $app_name = 'myapp';
  $result = xhprof_disable();
  $runs = new XHProfRuns_Default();
  $run_id = $runs->save_run($result, $app_name);
  $url = 'http://127.0.0.1/xhprof/?run='.$run_id . ' &source='.$app_name;
  error_log($url); // 計測結果の確認URLをerror_logに出力
}

// プロファイリング時にはコメント解除する
#xhprof_enable();
#register_shutdown_function('__xhprof_finish');

?>


このようにプロジェクト内のファイルにはゴミを残さないように自分だけの関数や適当な設定を、非常に簡単かつ安全に追加することができます。
※prependファイル内の関数を、プロジェクト内のファイルで利用しっぱなしで忘れると危険なので、 print_rなどのあきらかに使ったらわかる系のデバッグ用の関数以外はつくらないようにしていますが。。。

開発にはなかなか便利なので、利用してみてはいかがでしょうか。