FatalErrorException: входная строка слишком длинная

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

FatalErrorException в строке 412 ExceptionHandler.php: входная строка слишком длинная

Журнал ошибок Apache говорит:

Пн, 28 марта, 20:25:40.310761 2016] [fcgid:warn] [pid 2075:tid 3028430848] [client 127.0.0.1:56643] mod_fcgid: stderr: PHP Неустранимая ошибка: входная строка слишком длинная в /Users/xxx/Development /Laravel/myapp/vendor/symfony/debug/ExceptionHandler.php в строке 412, ссылка: http://app.dev/page/new

Я вызываю метод Message::set в своем контроллере:

Message::set('Page created');

И класс Message содержит:

<?php

namespace App\Models;

use Session;

class Message {

    const MESSAGE_INFO      = 0x1;
    const MESSAGE_WARNING   = 0x2;
    const MESSAGE_ERROR     = 0x3;

    public static function set($message, $type = MESSAGE_INFO) {
        $messages = self::get(false);
        $messages[$type][] = $message;

        Session::put('app.messages', $messages);
    }

    public static function get($flush = true) {
        $default = [ self::MESSAGE_INFO => [], self::MESSAGE_WARNING => [], self::MESSAGE_ERROR => []];

        if($flush) Session::pull('app.messages', $default);
        return Session::get('app.messages', $default);
    }

    public static function isAny() {
        $messages = self::get(false);

        foreach($messages AS $store) if(!empty($store)) return true;

        return false;
    }

}

Я так потерян с этим. Может кто-то помочь мне с этим?


person Erno Kulmala    schedule 28.03.2016    source источник


Ответы (2)


Проблема была с этой строкой:

public static function set($message, $type = MESSAGE_INFO) {

Так должно быть:

public static function set($message, $type = self::MESSAGE_INFO) {

Константа MESSAGE_INFO определена в классе Message, а не глобально.

Сообщение об ошибке было действительно запутанным. Когда я помещаю Message::set('Страница создана'); call внутри блока try-catch, то сообщение об ошибке было таким:

FatalErrorException в строке 45 GroupManagementController.php: допустимый размер памяти 268435456 байт исчерпан (попытка выделить 2890768384 байта)

person Erno Kulmala    schedule 12.09.2016

Возможно, это неправильно, но я не уверен, что вы можете хранить массив в сеансе Laravel.

После того, как вы сохраните этот массив в сеансе

Session::put('app.messages', $messages);

попробуйте сбросить переменную сеанса:

dd(Session::get('app.messages'));

Возвращайтесь с полученным результатом, чтобы мы могли копнуть глубже. Удачи!

person Marius Cucuruz    schedule 15.08.2016
comment
Спасибо за ответ на этот вопрос. Просто в коде была небольшая ошибка. Исправление было добавлено в исходный пост. - person Erno Kulmala; 19.08.2016