makinacorpus/drupal-drush-generator — Issue #1: drush eval "print 'Hello world';" fails
Author: benoitbryon
Created: 2012-01-23 20:38:28+00:00
State: open

Received by email...

> Bonjour,
>
> J'ai constaté ce bug à plusieurs reprises, mais n'ai eu une idée du problème que ce matin.
> Quand j'exécute
>
> drush eval "print 'Hello World!';"
>
> j'obtiens l'erreur :
>
> PHP Parse error: syntax error, unexpected ';' in /var/www/[...]/lib/drush/commands/core/core.drush.inc(637) : eval()'d code on line 1
> PHP Stack trace:
> PHP 1. {main}() /var/www/[...]/lib/drush/drush.php:0
> PHP 2. drush_main() /var/www/[...]/lib/drush/drush.php:41
> PHP 3. drush_dispatch() /var/www/[...]/lib/drush/drush.php:101
> PHP 4. call_user_func_array() /var/www/[...]/lib/drush/includes/command.inc:214
> PHP 5. drush_command() /var/www/[...]/lib/drush/includes/command.inc:214
> PHP 6. _drush_invoke_args() /var/www/[...]/lib/drush/includes/command.inc:806
> PHP 7. call_user_func_array() /var/www/[...]/lib/drush/includes/command.inc:134
> PHP 8. drush_core_php_eval() /var/www/[...]/lib/drush/includes/command.inc:134
>
> Je n'obtiens pas l'erreur si mon code PHP ne contient pas de guillemets, et je l'obtiens quelles que soient les combinaisons de guillemets que j'ai essayées (que des simples en échappant avec \ ceux à l'intérieur, pareil avec que des doubles, simples à l'intérieur de doubles ou encore vice-versa).
> Avec la même version de drush en local, je n'arrive pas à reproduire l'erreur. De même, les autres commandes drush fonctionnent dans ma VM.
> Puis je me suis rendu compte que dans ma VM, la commande drush n'est pas directement l'exécutable du projet Drupal Drush, mais un script qui s'intercale (wrapper ?). J'ai donc supposé que ça venait de ce script, et après quelques tests, j'ai quelque chose qui semble fonctionner, mais n'y connaissant pas grand chose en script shell, je ne sais pas si c'est correct.
> Dans la ligne d'appel à drush dans ce script, j'ai remplacé :
>
> $DRUSH_CMD --include=$COMMAND_DIRS --root=$WWW_DIR --uri=$DRUPAL_URI $@
>
> par :
>
> $DRUSH_CMD --include=$COMMAND_DIRS --root=$WWW_DIR --uri=$DRUPAL_URI "$@"
>
> J'ai rajouté les guillemets autour de $@. Ça ne semble pas casser quoi que ce soit, mais mes tests ne sont certainement pas exhaustifs. Votre avis est donc le bienvenu.
>
> Cordialement,
>
> David