2016-01-02 15 views
7

मैं इस समस्या हो रही है: http://pastebin.com/B5MKqD0TLaravel कारीगर विस्थापित असफल

PHP Fatal error: Uncaught TypeError: Argument 1 passed to Illuminate\Exception\WhoopsDisplayer::display() must be an instance of Exception, instance of ParseError given

लेकिन मैं कोई सुराग नहीं है कि यह कैसे तय करने के लिए है, मैं Laravel और संगीतकार आदि

मैं laravel 4.0 उपयोग कर रहा हूँ करने के लिए नया हूँ (क्योंकि मैं अपने दोस्त का अनुसरण कर रहा हूं और पुराना ट्यूटोरियल)

+0

यदि आप नीचे दिए गए मेरे उत्तर से खुश हैं, तो आप इसे स्वीकार कर सकते हैं :) –

उत्तर

16

ParseErrorwas introduced PHP 7 में। दूसरी तरफ आप लैरवेल 4 का उपयोग कर रहे हैं जिसमें PHP7 समर्थन नहीं है।

Laravel 5.1 Laravel के पहले संस्करण पीएचपी समर्थन करने के लिए है 7.

तो, वहाँ 2 समाधान है:

  1. उन्नयन Laravel के लिए> = 5.1 (दृढ़ता से यह सलाह देते हैं!)
  2. ढाल पीएचपी 5. करने के लिए *

PHP7 में फेंकने योग्य अपवाद बारे में अधिक पढ़ें: https://trowski.com/2015/06/24/throwable-exceptions-and-errors-in-php7/

+0

मैं PHP 5 में डाउनग्रेड कैसे करूं? –

+0

यह आपके ओएस पर निर्भर करता है, इसे निर्दिष्ट करें ताकि मैं आपकी मदद कर सकूं। –

+0

मैं विंडोज 10 –

5

लार्वाल त्रुटि हैंडलर को अक्षम करने के लिए एक अच्छा काम-आसपास मिला। अपने अनुप्रयोग/config/स्थानीय/app.php के शीर्ष करने के लिए इस जोड़ें (सही वापसी सरणी (...) से पहले:

set_error_handler(null); 
set_exception_handler(null); 
+0

यह एक अच्छा समाधान है, यदि आप नहीं चाहते हैं या PHP 5 * में डाउनग्रेड नहीं कर सकते हैं, साथ ही साथ Laravel 5. के लिए एक अद्यतन भी। * बहुत अधिक काम है –

0

एक और दृष्टिकोण जहाँ आप अपने साथ Laravel अपवाद संचालक लपेट कर सकते हैं, Laravel वापस करने के लिए पारित करने से पहले एक अपवाद उदाहरण के लिए नए त्रुटि प्रकार परिवर्तित

नीचे वर्ग कहीं बनाएं अपने आवेदन में:।

namespace Some\Namespace; 

use Error; 
use Exception; 

class ErrorWrapper 
{ 
    private static $previousExceptionHandler; 

    public static function setPreviousExceptionHandler($previousExceptionHandler) 
    { 
     self::$previousExceptionHandler = $previousExceptionHandler; 
    } 

    public static function handleException($error) 
    { 
      if (!self::$previousExceptionHandler) { 
       return; 
      } 

      $callback = self::$previousExceptionHandler; 

      if ($error instanceof Error) { 
       $callback(new Exception($error->getMessage(), $error->getCode())); 
      } 
      else { 
       $callback($error); 
      } 
     } 
} 

config/app.php के शुरू में, आप तो रजिस्टर कर सकते हैं रैपर वर्ग डिफ़ॉल्ट त्रुटि हैंडलर के रूप में:

$existing = set_exception_handler( 
    ['Some\Namespace\ErrorWrapper', 'handleException']); 

ErrorWrapper::setPreviousExceptionHandler($existing); 
संबंधित मुद्दे