phplinuxbashcommand-linecommand-line-interface

How to get Linux Console COLUMNS and ROWS parameters from PHP CLI?


I'm currently creating a new neat CLI library for PHP, and i'd like to figure out the width/height of the console it's running in.

I've tried many things like digging through $_ENV, exec("echo $COLUMNS"), etc, but no result, while if i type echo $COLUMNS or $ROWS in bash commandline, it neatly displays the value.

What do i need to do to access this value from PHP?

I'm using .sh scripts like this:

#!/usr/bin/php -q
<?php

require_once('lib.commandline.php');


class HelloWorld extends CommandLineApp {

  public function main($args) {

       echo('O, Hai.');
       
    }

}

Update Final solution:

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];
      }
    }

Solution

  • Another shell option that requires no parsing is tput:

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

    And as scanning into integers and a single tput (subshell) invocation:

    [$this->settings['screen']['width']
    ,$this->settings['screen']['height']] = sscanf(`tput cols lines`, ' %d %d');