web-dev-qa-db-fra.com

La déclaration de DrushInputAdapter :: hasParameterOption ($ values) doit être compatible avec Symfony

J'ai un site Drupal 8 configuré avec Acquia Dev Desktop sur mon hôte local. J'utilise PHP 7.0.14; tout fonctionne bien, et le site marche parfaitement.

J'ai installé Drush 8. Lorsque j'essaie d'exécuter drush cr all, Je reçois ce message d'erreur.

Erreur fatale PHP: la déclaration de Drush\Command\DrushInputAdapter :: hasParameterOption ($ values) doit être compatible avec Symfony\Component\Console\Input\InputInterface :: hasParameterOption ($ values, $ onlyParams = false) dans/Applications/DevDesktop/tools /vendor/drush/drush/lib/Drush/Command/DrushInputAdapter.php sur la ligne 27

Les lignes à l'origine de l'erreur sont les suivantes.

class DrushInputAdapter implements InputInterface {
    protected $arguments;
    protected $options;
    protected $interactive;

    public function __construct($arguments, $options, $command = false, $interactive = true)
    {
        $this->arguments = $arguments;
        $this->options = $options;

        // If a command name is provided as a parameter, then Push
        // it onto the front of the arguments list as a service
        if ($command) {
            $this->arguments = array_merge(
                [ 'command' => $command ],
                $this->arguments
            );
        }
        // Is it interactive, or is it not interactive?
        // Call drush_get_option() here if value not passed in?
        $this->interactive = $interactive;
    }

Avec Drupal Console, j'obtiens quelque chose de similaire.

Erreur fatale PHP: la déclaration de Drupal\Component\DependencyInjection\Container :: set ($ id, $ service) doit être compatible avec Symfony\Component\DependencyInjection\ContainerInterface :: set ($ id, $ service, $ scope = self :: SCOPE_CONTAINER) dans /Users/josue/WebDevelop/drupal-8.4.0/core/lib/Drupal/Component/DependencyInjection/Container.php sur la ligne 47

4
ValRob

La mise à jour vers Drush 9, comme suggéré dans le commentaire de user3346970, est certainement une solution à ce problème. Si vous souhaitez vous en tenir à Drush 8, passez à la version 8.1.15 ou ultérieure. Le problème que vous signalez ci-dessus a été résolu quelque part autour de la version 8.1.12.

Je ne suis pas certain des versions exactes de la console Drupal à utiliser avec chaque version de Drupal, mais je pense que vous découvrirez probablement également que la mise à jour vers la dernière version devrait également résoudre les choses. L'erreur que vous voyez indique que vous croisez Symfony version 2 (par exemple dans une ancienne version de Drush ou Drupal Console) avec Symfony version 3 (par exemple dans Drupal 8.4.0 et versions ultérieures).

4
greg_1_anderson

J'ai mis à jour ma version drush de 8.1.10 => 8.1.15 en utilisant la commande ci-dessous et en bon état de fonctionnement.

compositeur mise à jour globale drush/drush

2
Rajesh Vishwakarma