2016-10-01 30 views
1

我目前正在研究一個Laravel包,它將直接從我們的瀏覽器啓動behats測試。這是一個個人項目。過程組件symfony未能執行behat命令

我使用Process Component Symfony來執行各種命令。但是,它不能執行貝哈特的命令,並返回我這個錯誤:

供應商/斌/貝哈特「失敗 退出代碼:255(未知錯誤)工作目錄:/應用程序/ MAMP/htdocs中/封裝/公 輸出:================解析錯誤:解析錯誤,預計'&' 'or「變量(T_VARIABLE)」在/ Applications/MAMP/htdocs/Package/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php on line 475 錯誤輸出:================

總之,他拒絕執行所有命令Behat。這裏使用我的包的控制器中的命令。

<? Php 

namespace Nkweb\BehatWeb\Http\Controllers; 

use App\Http\Controllers\Controller; 
use Symfony\Component\Process\Exception\ProcessFailedException; 
use Symfony\Component\Process\Process; 

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]); 
    } 
} 

我搜索了谷歌,並以各種方式返回,但我無法找到任何有關它。我真的需要你的幫助:(

+0

您是否嘗試過用B小寫的Behat? – lauda

+0

你好,是的,但我得到了相同的錯誤 – nkweb

回答

0

我不是Laravel的用戶,但我會給它一個鏡頭,我會通過我的過程,所以希望它能幫助你調試將來的類似問題。假設你使用的是最新的Laravel,但是如果你可以指出你正在運行的是哪個版本,那麼這將會很有幫助

看着這個錯誤,我們有一個很好的開始。laravel/framework/src中的475行/ Illuminate /Foundation/helpers.php這將在下面的第一行:。

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

而且我們預計的變量或&(通過引用傳遞)根據ER ror,所以我們可以假設它正在討論事件函數中的參數。現在我們可以看到參數前面是...這對Google來說很難,但是您可能會搜索「splat」運算符(請注意,不同語言可能有其他名稱)可能會得到更好的結果。

這是在PHP 5.6中引入的,它使我相信你正在運行一個不受支持的早期版本。我建議升級到PHP 5.6或更高版本,看看是否可以解決您的問題。如果沒有,請發佈您正在使用的PHP版本。

+0

Thx你的答案,我更新了我的php5.5。*,現在我有php5.6.25。同樣的錯誤。我認爲Behat繼續使用我的舊版本。我試圖找到如何改變這種行爲 – nkweb

+0

如果你使用<?php phpinfo()創建一個新文件並從MAMP提供它,在裏面。它顯示了什麼版本? –