私はphpスクリプトを書きました。インタラクティブに読み取って実行する前に、ttyデバイス(端末)に接続された標準入力で呼び出されたときにヘルプメッセージを表示したいのですが、標準入力としてパイプからのファイルまたはストリームで呼び出されたときに表示されません。
PHPからこれを検出する方法はありますか?
を使用しposix_isatty
ます。
この関数は、ファイル記述子(整数)とPHPストリームの両方を受け入れます。PHPストリームを受信すると、ファイル記述子を取得して代わりに使用するために、自動的にキャストを試みます。
PHP 7.2以降stream_isatty
、Windowsでも動作するを使用できます。
例えば:
php -r "var_dump(stream_isatty(STDERR));"
結果は
bool(true)
だが
php -r "var_dump(stream_isatty(STDERR));" 2>output.txt
結果は
bool(false)
(もちろん、これはSTDOUTでも機能します)。