2024-05-20 php shellscript
fwrite と STDERR の組み合わせで可能。以下サンプルスクリプト。
<?php
// 標準エラー
fwrite(STDERR, "標準エラー 1!\n");
fwrite(STDERR, "標準エラー 2!\n");
// 標準出力
echo "標準出力 1!\n";
echo "標準出力 2!\n";
このスクリプトを適当な名前で保存し(ここでは sample.php にした)、標準出力のみログに保存する場合は php sample.php 1> log.txt
、
$ php sample.php 1> log.txt
標準エラー 1!
標準エラー 2!
$ cat log.txt
標準出力 1!
標準出力 2!
標準エラーのみログに保存する場合は php sample.php 2> log.txt
を実行する。
$ php sample.php 2> log.txt
標準出力 1!
標準出力 2!
$ cat log.txt
標準エラー 1!
標準エラー 2!
参考 : https://www.php.net/manual/ja/features.commandline.io-streams.php
stderr のようなストリームを自分で オープンする必要はなく、以下のようにストリームリソースの代わりに 定数を使用するだけでかまいません。
php -r 'fwrite(STDERR, "stderr\n");'
これらのストリームを明示的に閉じる必要はありません。これは、 PHP により自動的に行われます。