$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);
解析を必要としない別のシェル オプションは tput
です。 :
$this->settings['screen']['width'] = exec('tput cols')
$this->settings['screen']['height'] = exec('tput lines')
なぜ grep
が必要なのかわからない stty
を解析する 出力:「カーネルに応じた行数と列数」を報告する別のオプションがあります。
ワンライナー、エラー処理なし:
list($rows, $cols) = explode(' ', exec('stty size'));
ワンライナー、問題が発生した場合に行/列の両方が0であると想定し、エラー出力を抑制します:
list($rows, $cols) = explode(' ', @exec('stty size 2>/dev/null') ?: '0 0');
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