2

I've been trying to set up a debug environment for Drush using Eclipse(Kepler), in order to find out why the difference of the result of running hook_install() between via Web UI and via "Drush en". My LAMP stack is ZendServer(6.0.1), and I am using ZendDebugger. So far it works fine for Drupal debugging.

I followed this post: http://blokspeed.net/blog/2012/04/debugging-drush-with-eclipse-and-xdebug/ to begin the setup. The Eclipse prompts for the root folder for Drush to run and it seems to be picked-up by Drush, but on console Drush still complains that it needs a higher bootstrap level to run:

Command pm-enable needs a higher bootstrap level to run - you will       [error]
need to invoke drush from a more functional Drupal environment to run
this command. [0.58 sec, 12.04 MB]

The directory                                                            [error]
/Users/r8d/dev/git/drupal/sites/10088.localhost does
not contain a valid Drupal installation [0.59 sec, 12.04 MB]

Where /Users/r8d/dev/git/drupal is the Document root of this Drupal site and the settings.php is indeed located within sites/10088.localhost.

I compared the $_SERVER variables and have found these values are different from running Drush directly from command-line in the 10088.localhost folder:

From command-line:

Array
(
...
[SCRIPT_FILENAME] => /usr/local/zend/share/pear/drush/drush.php
[SCRIPT_NAME] => /index.php
[PWD] => /Users/r8d/dev/git/drupal/sites/10088.localhost
…
)

The index.php is where the Drupal bootstrap starts.

But, in Eclipse:

Array
(
...
[SCRIPT_FILENAME] => /usr/local/zend/share/pear/drush/drush.php
[SCRIPT_NAME] => /usr/local/zend/share/pear/drush/drush.php
[PWD] => /usr/local/zend/share/pear/drush
…
)

I then tried to make an Environment variable PWD in the debug setting to hopefully override $_SERVER['PWD'] but in vein.

The debugging does work for Drush itself, though. I can step within Drush till it ends with error. Just that, although Drush does pick up the --root argument, hence the error message, it seems not seeing settings.php, which is vital in order to debug the hook_install() in the Drupal site.

Besides all these findings, I also find PHP executable also matters. I use the php executable that comes with ZendServer at /usr/local/zend/bin/php, with /usr/local/zend/etc/php.ini and SAPI Type set to CLI. If I switch to /usr/local/zend/bin/php-cli the drush command will run like no argument is taken, although it uses the same php.ini.

Is there anything I am missing? What should I do to get the drush debuggin work? I am meanwhile still digging the difference of environment settings with Eclipse. Thanks in advance for those who try to understand the situation and give advices!

Your Answer

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

Browse other questions tagged or ask your own question.