#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. Какую версию он показывает?