【问题标题】:laravel-3 core exception on new installation新安装时的 laravel-3 核心异常
【发布时间】:2013-04-14 04:47:30
【问题描述】:

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

我收到以下错误。

未处理的异常

消息: 未定义索引:argv

地点: DOCUMNET ROOT/laravel/core.php 在第 218 行

编辑:

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

请注意,此行不会导致错误,它似乎只是为发生错误的代码注册了一个处理程序。

这是错误:

未处理的异常

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

地点: DOCUMENT ROOT/laravel/session.php 第 109 行

堆栈跟踪:

  1. 文档根目录/laravel/session.php(150): Laravel\Session::instance()
  2. 文档根目录/laravel/laravel.php(195): Laravel\Session::__callStatic('save', Array)
  3. 文档根目录/laravel/laravel.php(195): Laravel\Session::save()
  4. DOCUMENT ROOT/public/index.php(34): require('/mona/developme...')
  5. {主要}

这些是导致错误的代码块:

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 是一个空数组。

【问题讨论】:

  • tbh 我有点困惑。您说它在核心 218(argv 问题)上,然后粘贴两个与该行无关的代码块。我刚刚将我的核心更新到最新,没有问题。我确实想知道这是否是 nginx/php-cgi 问题(尝试使用 php-fpm,反正更好) - 也许服务器变量的那部分没有传递。
  • 在注释掉“Error::shutdown();”之后,我将错误跟踪到了那些代码块。在 laravel.php 的第 50 行。我很想把所有东西都切换到 php-fpm,不过这是一个公司问题,我无法控制。
  • @Oddman 我更新了问题以清楚地显示逻辑。感谢您的回复。
  • 啊该死的 - 不过很高兴你把它整理好了!

标签: laravel laravel-3


【解决方案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 时继续运行。

【讨论】:

    【解决方案2】:

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

    public static function cli()
    {
        if(array_key_exists('HTTP_HOST', $_SERVER)) return false;
    
        return defined('STDIN') || (substr(PHP_SAPI, 0, 3) == 'cgi' && getenv('TERM'));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-16
      • 1970-01-01
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 2018-07-12
      相关资源
      最近更新 更多