私はSlim Frameworkと組み合わせてEloquentを使用して、小さなAPIを構築しています。何らかの理由で、私はこのエラーを取得しています、と私は問題を見つけることができません。ターゲット[Illuminate Contracts Debug ExceptionHandler]がインスタンス化できません
Target [Illuminate\Contracts\Debug\ExceptionHandler] is not instantiable.
データベースが正しく設定されています。このエラーは、サーバーのステージング環境でスローされます。ローカルでは、MySQL 5.6.29では完全に動作します。 MySQL 5.7とは関係ないと思いますが、同じバージョンのEloquentを使って同じサーバー上で別のアプリケーションを実行しているためです。
誰でも正しい方向に向けることができますか?
私が使用しています:
- 雄弁バージョン:5.3.23
- PHPバージョン:5.6.28
- データベースドライバ&バージョン:MySQLの5.7.16
バックトレース
しかしがどのように私はLaravelを使用していないカスタムエラーハンドラを登録することができます
/path/to/app/shared/vendor/illuminate/container/Container.php:644
Illuminate\Container\Container -> make
/path/to/app/shared/vendor/illuminate/database/Connectors/ConnectionFactory.php:130
call_user_func
/path/to/app/shared/vendor/illuminate/database/Connection.php:964
Illuminate\Database\Connection -> getPdo
/path/to/app/shared/vendor/illuminate/database/Connection.php:832
Illuminate\Database\Connection -> reconnectIfMissingConnection
/path/to/app/shared/vendor/illuminate/database/Connection.php:717
Illuminate\Database\Connection -> run
/path/to/app/shared/vendor/illuminate/database/Connection.php:350
Illuminate\Database\Connection -> select
/path/to/app/shared/vendor/illuminate/database/Query/Builder.php:1648
Illuminate\Database\Query\Builder -> runSelect
/path/to/app/shared/vendor/illuminate/database/Query/Builder.php:1634
Illuminate\Database\Query\Builder -> get
/path/to/app/shared/vendor/illuminate/database/Eloquent/Builder.php:632
Illuminate\Database\Eloquent\Builder -> getModels
/path/to/app/shared/vendor/illuminate/database/Eloquent/Builder.php:327
Illuminate\Database\Eloquent\Builder -> get
/path/to/app/shared/vendor/illuminate/database/Eloquent/Builder.php:297
Illuminate\Database\Eloquent\Builder -> first
...
私はそれが未登録のエラーハンドラとは何かを持っている疑っていますか?
UPDATE 次のように@patricusのソリューションを実現することができる。
// bootstrap Eloquent ORM
$container = new Container();
$container->singleton(
'Illuminate\Contracts\Debug\ExceptionHandler'
, 'My\Custom\DatabaseExceptionHandler'
);
$factory = new ConnectionFactory($container);
$connection = $factory->make([
'driver' => 'mysql'
, 'host' => App::config('database_host')
, 'database' => App::config('database_name')
, 'username' => App::config('database_user')
, 'password' => App::config('database_password')
, 'charset' => App::config('database_charset')
, 'collation' => App::config('database_collate')
, 'prefix' => ''
]);
$resolver = new ConnectionResolver();
$resolver->addConnection('default', $connection);
$resolver->setDefaultConnection('default');
// initialize connection
Model::setConnectionResolver($resolver);
ありがとうございます!私は私の質問に最終的な解決策を加えました。 – wout