新安装时laravel-3核心异常

时间:2013-03-27 22:56:22

标签: laravel laravel-3

我在运行ubuntu 12.04 LTS,Nginx,php-cgi和Laravel v3.2.14的机器上安装了新的Laravel

我收到以下错误。

未处理的例外

消息: 未定义的索引:argv

位置: 第218行的DOCUMNET ROOT / laravel / core.php

编辑:

我通过在laravel // Error :: shutdown()中注释掉错误处理函数,设法得到一个更具描述性的错误;在DOCUMENT ROOT / laravel / laravel.php第50行

请注意,此行不会导致错误,它似乎只为代码注册处理程序。

这是错误:

未处理的例外

消息: 在使用会话之前必须设置驱动程序。

位置: 第109行的DOCUMENT ROOT / laravel / session.php

堆栈追踪:

  1. DOCUMENT ROOT / laravel / session.php(150):Laravel \ Session :: instance()
  2. DOCUMENT ROOT / laravel / laravel.php(195): Laravel \ Session :: __ callStatic('save',Array)
  3. DOCUMENT ROOT / laravel / laravel.php(195):Laravel \ Session :: save()
  4. DOCUMENT ROOT / public / index.php(34):require('/ mona / developme ...')
  5. {主}
  6. 这些是导致错误的代码块:

    if (Config::get('session.driver') !== '')
    {
        Session::save();
    }
    

    在DOCUMENT ROOT / laravel / session.php中调用此函数

    public static function __callStatic($method, $parameters)
    {
        return call_user_func_array(array(static::instance(), $method), $parameters);
    }
    

    $ method包含字符串'save',$ parameters是一个空数组。

2 个答案:

答案 0 :(得分:1)

如果你使用的是php-cgi,Laravel认为cli正在访问它。

解决方法是修改DOCUMENT ROOT / laravel / request.php,如下所示:

public static function cli()
{
    // This is a hack to make laravel work with fast-cgi
    // Added by David - 03/27/13
    if(!array_key_exists('argv', $_SERVER)) return false;

    return defined('STDIN') || (substr(PHP_SAPI, 0, 3) == 'cgi' && getenv('TERM'));

}

在返回false之前检查$ _SERVER超级全局是否具有'argv'键允许cli在使用php-cgi时继续运行。

答案 1 :(得分:0)

受到你的回答的启发,这对我有用:

public static function cli()
{
    if(array_key_exists('HTTP_HOST', $_SERVER)) return false;

    return defined('STDIN') || (substr(PHP_SAPI, 0, 3) == 'cgi' && getenv('TERM'));
}