Обнаруживать, является ли stdin устройством tty (терминал) или трубой в PHP?

Я написал сценарий php. Я хочу, чтобы оно отображало справочное сообщение при вызове со стандартным вводом, подключенным к устройству tty (терминалу), перед чтением и выполнением в интерактивном режиме, но не отображалось при вызове с файлом или потоком из канала в качестве стандартного ввода.

Есть ли способ обнаружить это из PHP?

Используйте posix_isatty .

Эта функция принимает как дескриптор файла (целое число), так и поток PHP. Если он получает поток PHP, он автоматически пытается выполнить его , чтобы получить файловый дескриптор и использовать его вместо этого.