Как получить консоль Linux $ COLUMNS и $ ROWS из PHP cli?

В настоящее время я создаю новую опрятную библиотеку CLI для PHP, и я хотел бы узнать ширину / высоту консоли, в которой он работает.

Я пробовал много вещей, таких как копание через $ _ENV, exec («echo $ COLUMNS») и т. Д., Но результата нет, а если я набираю echo $ COLUMNS или $ ROWS в командной строке bash, он аккуратно отображает это значение.

Что мне нужно сделать, чтобы получить доступ к этому значению с PHP?

Я использую такие скрипты .sh:

#!/usr/bin/php -q <?php require_once('lib.commandline.php'); class HelloWorld extends CommandLineApp { public function main($args) { echo('O, Hai.'); } } 

Обновление Окончательное решение:

 public function getScreenSize() { preg_match_all("/rows.([0-9]+);.columns.([0-9]+);/", strtolower(exec('stty -a |grep columns')), $output); if(sizeof($output) == 3) { $this->settings['screen']['width'] = $output[1][0]; $this->settings['screen']['height'] = $output[2][0]; } } 

Другой вариант оболочки, который не требует синтаксического анализа, – tput :

 $this->settings['screen']['width'] = exec('tput cols') $this->settings['screen']['height'] = exec('tput lines') 

Используйте функцию PHP ncurses_getmaxyx .

 ncurses_getmaxyx (STDSCR, $Height, $Width) 

РАНЕЕ:

http://php.net/manual/en/function.getenv.php

 $cols = getenv('COLUMNS'); $rows = getenv('ROWS'); 

«Правильный» способ, вероятно, вызвать TIOCGSIZE ioctl, чтобы получить представление ядра о размере окна или вызвать команду stty -a и проанализировать результаты для rows и columns

$COLUMNS и $LINES , вероятно, не экспортируются в вашу программу. Вы можете запустить export LINES COLUMNS перед запуском приложения или получить эту информацию напрямую:

 $fp=popen("resize", "r"); $b=stream_get_contents($fp); preg_match("/COLUMNS=([0-9]+)/", $b, $matches);$columns = $matches[1]; preg_match("/LINES=([0-9]+)/", $b, $matches);$rows = $matches[1]; pclose($fp); 

Возможно, эта ссылка может быть ответом, вы можете использовать коды ANSI Escape для этого, используя echo используя определенную последовательность кода Escape, в частности «Query Device», в которой я нашел здесь еще одну ссылку, которая подробно объясняет. Возможно, использование этого может позволить вам получить столбцы и строки экрана …

Переменные окружения можно найти в супер глобальной переменной $ _ENV.

 echo $_ENV['ROWS']; 

например.