Компоненту процесса Symfony не удалось выполнить команду behat

#php #laravel #symfony #process #behat

#php #laravel #symfony #процесс #behat

Вопрос:

В настоящее время я работаю над пакетом Laravel, который будет запускать тесты behats непосредственно из нашего браузера. это личный проект.

Я использую компонент процесса Symfony для выполнения различных команд. Однако он не может выполнить команду Behat и возвращает мне эту ошибку:

сбой «vendor / bin / Behat «. Код выхода: 255 (неизвестная ошибка) Рабочий каталог: / Applications / MAMP / htdocs / Package / public Output: ================ Ошибка синтаксического анализа: ошибка синтаксического анализа, ожидающая 'amp;' 'or «переменная (T_VARIABLE)’ ‘в / Applications / MAMP / htdocs/ Package / vendor /laravel/framework/src/Illuminate/Foundation/helpers.php Вывод ошибки в строке 475: ================

Короче говоря, он отказался выполнять все команды Behat. Здесь используется команда в контроллере моего пакета.

 <? Php

namespace NkwebBehatWebHttpControllers;

use AppHttpControllersController;
use SymfonyComponentProcessExceptionProcessFailedException;
use SymfonyComponentProcessProcess;

class BehatWebController extends Controller
{
    
    public function launchBehat()
    {
        
        $command = base_path('vendor/bin/Behat');

        $process = new Process($command);
        try {
            $process->mustRun();
            $outputs = explode("n", $process->getOutput());
        } Catch (ProcessFailedException $e) {
            return $e->getMessage();
        }

        return view('behatweb::content.init', ['outputs' => $outputs]);
    }
}
  

Я искал Google и возвращался всеми способами, но я ничего не мог найти об этом. Мне действительно нужна ваша помощь: (

Комментарии:

1. Вы пробовали Behat со строчной буквой B?

2. Здравствуйте, да, но я получаю ту же ошибку

Ответ №1:

Я не пользователь Laravel, но я попробую. Я пройдусь по своему процессу, так что, надеюсь, это поможет вам отладить подобные проблемы в будущем. Я предполагаю, что вы используете последнюю версию Laravel, но было бы полезно, если бы вы могли указать, какую версию вы используете.

Глядя на ошибку, у нас есть хорошее место для начала. Строка 475 в laravel/framework/src/Illuminate/Foundation/helpers.php . Какая первая строка ниже:

 function event(...$args)
{
    return app('events')->fire(...$args);
}
  

И мы ожидаем переменную or amp; (передать по ссылке) в соответствии с ошибкой, поэтому мы можем предположить, что речь идет о параметре в функции события. Теперь мы видим, что параметру предшествует … это сложно найти в Google, но вы можете получить лучшие результаты при поиске оператора «splat» (обратите внимание, разные языки могут иметь альтернативные имена).

Это было введено в PHP 5.6, что наводит меня на мысль, что вы используете более раннюю версию, которая не поддерживается. Я бы посоветовал перейти на PHP 5.6 или выше и посмотреть, исправит ли это вашу проблему. Если этого не произойдет, пожалуйста, опубликуйте версию PHP, которую вы используете.

Комментарии:

1. Спасибо за ваш ответ, я обновил свой php5.5. * и теперь у меня есть php5.6.25. Та же ошибка. Я думаю, что Behat продолжает использовать мою старую версию. Я пытаюсь найти, как изменить это поведение

2. Если вы делаете новый файл и извлекаем ее из МАМП с <?php phpinfo(); in it. Какую версию он показывает?