犬ターネット

PHP ファイルを cli 実行時、標準エラーを返してログに保存するには

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 により自動的に行われます。


ケーキ食べ放題

両親のケータイの機種変をした / テクニカル・デスメタル・ガイドブック