2016-05-16 42 views
1

我想在laravel 5.1中開發一個應用程序,我需要做一些計劃任務。我有錯誤emailOutputTo上的file_get_contents Laravel

$schedule->command('inspire') 
    ->dailyAt('04:00') 
    ->sendOutputTo(storage_path('app/logs/logs.txt')) 
    ->emailOutputTo('[email protected]'); 

然而,當我執行命令的php工匠時間表(當然:)僅用於測試)這樣的代碼:運行測試,如果我收到的電子郵件和文件logs.txt創建時,系統給我一個錯誤:

[ErrorException] file_get_contents('/srv/users/serverpilot/apps/laravelApp/storage/app/logs/logs.txt '): failed to open stream: No such file or directory

此錯誤是emailOutputTo聯繫,因爲如果我刪除這部分代碼,我沒有任何錯誤,該文件logs.txt創建做。 我的服務器的操作系統是Ubuntu 14.04。

任何幫助將被認爲是! :)謝謝

回答

0

我認爲你得到的是錯誤,因爲emailOutputTo()方法無法找到文件

[ErrorException]

file_get_contents('/srv/users/serverpilot/apps/laravelApp/storage/app/logs/logs.txt '):

failed to open stream: No such file or directory

如果你看一下Laravel source for the method emailOutputTo()您有以下:

public function emailOutputTo($addresses, $onlyIfOutputExists = false) 
{ 
    if (is_null($this->output) || $this->output == $this->getDefaultOutput()) { 
     throw new LogicException('Must direct output to a file in order to e-mail results.'); 
    } 

    $addresses = is_array($addresses) ? $addresses : func_get_args(); 

    return $this->then(function (Mailer $mailer) use ($addresses, $onlyIfOutputExists) { 
     $this->emailOutput($mailer, $addresses, $onlyIfOutputExists); 
    }); 
} 

其中調用:

emailOutput()它具有以下功能:

protected function emailOutput(Mailer $mailer, $addresses, $onlyIfOutputExists = false) 
{ 
    $text = file_get_contents($this->output); 

    if ($onlyIfOutputExists && empty($text)) { 
     return; 
    } 

    $mailer->raw($text, function ($m) use ($addresses) { 
     $m->subject($this->getEmailSubject()); 
     foreach ($addresses as $address) { 
      $m->to($address); 
     } 
    }); 
} 

我猜測在emailOutput()第一行導致了問題:

$text = file_get_contents($this->output); 

如果得到創建你的文件,然後我有點難倒,爲什麼它那麼拋出此錯誤是誠實,但無論如何它不會選擇它,所以這可能是與路徑有關。

另一方面,failed to open stream: No such file or directory "emailOutputTo"的快速谷歌產生以下鏈接:Bug with task scheduling when using emailOutputTo()它不能清楚地看着我像它已解決(雖然它已關閉),除非我失去了一些東西。也許嘗試升級到最新版本的Laravel,看看是否能解決您的問題,如果可以的話。

+0

首先,感謝您的回覆haakym。但是,我有這個代碼相同的錯誤...:/ sendOutputTo方法工作正常,文件'logs.txt'被創建。我認爲這個錯誤與emailOutputTo方法有關。 – sampaioPT

+0

不客氣。哦,我的壞,對不起!我會用一些建議更新我的答案! – haakym

+0

@sampaioPT請檢查我的答案更新 – haakym