5

I am running LAMP on Ubuntu 16.04. I have a drupal 7 installation and I have installed drush 8.1.3 via Composer version 1.5.2. I believe there is bug in php7.2 causing the error as discussed on Github, however even after I applied the recommended fix which is to update the pear/console_table to the latest version instructed here, the problem still remains. I also followed the instructions on Super User to be absolutely sure that I have the most up to date version of pear installed as well (did not install PHPunit). And, FYI in accordance with the drush installation documentation found here, I also made the proper changes to my .bashrc file as well (below).

Whenever I run drush status I receive the following error:

count(): Parameter must be an array or an object that implements     [warning]
Countable Table.php:789
count(): Parameter must be an array or an object that implements     [warning]
Countable Table.php:789
count(): Parameter must be an array or an object that implements     [warning]
Countable Table.php:789
count(): Parameter must be an array or an object that implements     [warning]
Countable Table.php:789
count(): Parameter must be an array or an object that implements     [warning]
Countable Table.php:789
count(): Parameter must be an array or an object that implements     [warning]
Countable Table.php:789
count(): Parameter must be an array or an object that implements     [warning]
Countable Table.php:789
count(): Parameter must be an array or an object that implements     [warning]
Countable Table.php:789
PHP executable         :  /usr/bin/php                                 
PHP configuration      :  /etc/php/7.2/cli/php.ini                     
PHP OS                 :  Linux                                        
Drush script           :  /home/webdevusr/vendor/drush/drush/drush.php 
Drush version          :  8.1.13                                       
Drush temp directory   :  /tmp                                         
Drush configuration    :                                               
Drush alias files      :   

If I execute drush sql-connect

Unable to load class Drush\Sql\Sql                                  [error]
Drush\Sql\SqlException: Unable to find a matching SQL Class. Drush   [error]
cannot find your database connection details. in
/home/webdevusr/vendor/drush/drush/commands/sql/sql.drush.inc:541
Stack trace:
#0
/home/webdevusr/vendor/drush/drush/commands/sql/sql.drush.inc(221):
drush_sql_get_class()
#1 /home/webdevusr/vendor/drush/drush/includes/command.inc(422):
drush_sql_connect()
#2 /home/webdevusr/vendor/drush/drush/includes/command.inc(231):
_drush_invoke_hooks(Array, Array)
#3 /home/webdevusr/vendor/drush/drush/includes/command.inc(199):
drush_command()
#4
/home/webdevusr/vendor/drush/drush/lib/Drush/Boot/BaseBoot.php(67):
drush_dispatch(Array)
#5 /home/webdevusr/vendor/drush/drush/includes/preflight.inc(66):
Drush\Boot\BaseBoot->bootstrap_and_dispatch()
#6 /home/webdevusr/vendor/drush/drush/drush.php(12): drush_main()
#7 {main}

The contents of my ~/.bashrc file, are as follows:

export PATH="$HOME/.composer/vendor/bin:$PATH"

export PATH=/bin:/usr/local/bin:/usr/local/mysql/bin:$PATH

# Include Drush bash customizations.
if [ -f "/home/webdevusr/.drush/drush.bashrc" ] ; then
source /home/webdevusr/.drush/drush.bashrc
fi

# Include Drush completion.

if [ -f "/home/webdevusr/.drush/drush.complete.sh" ] ; then
source /home/webdevusr/.drush/drush.complete.sh
fi

# Include Drush prompt customizations.

if [ -f "/home/webdevusr/.drush/drush.prompt.sh" ] ; then
source /home/webdevusr/.drush/drush.prompt.sh
fi

The result of drush cc all executed from within my drupal installation folder is:

No Drupal site found, only 'drush' cache was cleared. 

Anyone know how to get drush to working for my local (LAMP) Drupal 7 installations?

2

In the file .config/composer/vendor/pear/console_table/Table.php, we can see that the involved function _updateRowsCols($rowdata = null) has a wrong signature, its argument being assigned null as default - not countable.

Rather than using the @ operator as it could mute more error/warning than intended, it is preferable to fix the function signature :

function _updateRowsCols($rowdata = []) {...}

... and/or to use the Null Coalescing Operator ?? to safely fallback to an empty (but countable) array right in the function call :

$this->_max_cols = max($this->_max_cols, count($rowdata ?? []));

[Edit] It's worth noting that the fix for this issue was committed to pear/Console_Table in October 2017 while the question was asked on 2018.. so just use the latest version... Anyway, just for information here is the code fix which use a ternary operator probably for backward compatibility :

function _updateRowsCols($rowdata = null)
    {
        // Update maximum columns.
        $this->_max_cols = max($this->_max_cols, is_array($rowdata) ? count($rowdata) : 0);

        ...
    }
0

You can edit .config/composer/vendor/pear/console_table/Table.php or look for that file first in your system. Open it with your favorite editor and in edit line 789. Silence it like this:

@$this->_max_cols = max($this->_max_cols, count($rowdata));

You're good to go.

1
  • I kept getting banned for asking Drupal related questions....that notably, other drupal users answered... so I decided to make life simple switch to Wordpress... problem solved.. – yupthatguy Sep 28 '18 at 15:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.