FatalErrorException:输入字符串太长

时间:2016-03-28 17:37:41

标签: php laravel-5 php-7

我已经开始构建一个新的Laravel 5应用程序。我的应用程序中需要一个站点消息功能,所以我创建了一个。但是现在当我尝试将消息添加到堆栈中时,我会收到以下错误:

  

ExceptionHandler.php第412行中的FatalErrorException:输入字符串是   太久了

Apache错误日志说:

  

Mon Mar 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;
    }

}

我很失落。有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:1)

问题在于这一行:

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

应该是:

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

MESSAGE_INFO常量在Message类中定义,而不是全局定义。

错误消息确实令人困惑。当我把Message :: set(&#39; Page created&#39;);在try-catch块内调用,然后错误消息是:

  

GroupManagementController.php第45行中的FatalErrorException:允许   内存大小268435456字节耗尽(试图分配2890768384   字节)

答案 1 :(得分:0)

可能是错的,但我不确定你是否可以在Laravel会话中存储数组。

将该数组存储在会话中

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

尝试转储会话变量:

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

回到你得到的结果,我们可以深入挖掘。 祝你好运!