Rubyで書くと下記の通りの方法でできますが、同様のことをPHPでも行いたいと考えています。
STDIN.reopen("/dev/null", "r+")
STDOUT.reopen("/dev/null", "w")
STDERR.reopen("/dev/null", "w")
別の方法としては、
php /foo/var.php < /dev/null >/dev/null 2>&1
のように起動時にリダイレクト先を指定すること方法もありますが、プログラム上で変更する方法を探しています。
どうぞよろしくお願い致します。
回答1のように直接書くという手もあるが、それはそれで面倒だから一発で対処できないかという趣旨の質問なのだろう。だが残念ながらphpにはお望みのコマンド類は用意されていない。
http://www.php.net/manual/ja/wrappers.php.php
http://www.php.net/manual/ja/features.commandline.php
既にご存知のとおり起動時に示してやるのが間違いない方法だ。
出力の切り替えについては下記のように ob_start などを使って行います。
<?php echo 'へげへげ'; ob_start(); //標準出力トラップ開始 echo 'ほげほげ'; $output = ob_get_contents(); //トラップした文字列 ob_end_clean(); //トラップ終了 // /dev/nullへ出力 $fp = fopen('file:///dev/null', 'w'); fwrite($fp, $output); fclose($fp); ?>
入力の切り替えは、コマンドライン以外でやったことがないので分かりません。ごめんなさい。