「PHPとしても実行できるRubyの書きかた」にあやからせて頂きました。
こんな感じになりました
index.php
<?php
echo 'world';
.htaccess
#<?php /*
php_value output_buffering 2
php_value auto_prepend_file .htaccess
<IfModule dummy>
*/
echo substr(ob_get_clean(), 1); // 先頭の'#'を削除
ini_set('output_buffering', 0); // 戻す
echo 'hello ';
/*
</IfModule>
# */
この状態で index.php
にアクセスすると hello world
と出力されます。
先頭「#」の扱いについて
この1バイトが誤魔化せず output_buffering
に頼って、後から消すことにしました。
substr
していますがイレギュラーが無ければob_end_clean()
で捨てるだけでも大丈夫なはずです。
<IfModule dummy>について
存在しないモジュール名を<IfModule>
などに与えることで複数行コメントのように扱っています。
使い所
あったらいいですね。
最初の例なら php.d
にこんな2ファイル突っ込むだけで十分ですし。
/etc/php.d/myhook.ini
auto_prepend_file=/etc/php.d/myhook.php
/etc/php.d/myhook.php
<?php
echo 'hello ';
ちなみに元々は前の記事の続きとしてこんな、1ファイル置くだけでデバッグ用のフックか何かができないか考えていたことが発端でした。
#<?php /*
php_value output_buffering 2
php_value auto_prepend_file .htaccess
php_value error_log syslog
<IfModule dummy>
*/
echo substr(ob_get_clean(), 1); // 先頭の'#'を削除
ini_set('output_buffering', 0); // 戻す
function dump() {
$args = func_get_args();
foreach ($args as $arg) {
error_log(var_export($arg, true));
}
}
/*
</IfModule>
# */