0

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. ドキュメントルート/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 は空の配列です。

4

2 に答える 2

1

Laravelはphp-cgiを使っていると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」キーがあるかどうかを確認すると、php-cgi の使用中に cli が機能し続けることが許可されます。

于 2013-03-28T04:29:24.653 に答える