我的项目出现了一个非常奇怪的问题,这个问题发生在我日常的普通工作中。我收到了一个“数组到字符串转换”错误,该错误出现在我项目的每一页上。 SentryServiceProvider.php抛出这个:
throw new \InvalidArgumentException("Invalid hasher [$hasher] chosen for Sentry.");
我做了一些调试,看起来值$ hasher为null。当我试图像这样硬编码值$ hasher时:
//$hasher = $app['config']['cartalyst/sentry::hasher'];
$hasher = 'sha256';
它有点工作但我得到不同的查询异常 - 我想这是因为它找不到其他的哨兵配置。根据我的理解,在app> config> packages> cartalyst> sentry中创建的Sentry配置文件未被正确选取。任何想法为什么会这样?
我正在回到this topic
以下是导致错误的部分:
class SentryServiceProvider extends ServiceProvider {
/**
* Boot the service provider.
*
* @return void
*/
public function boot()
{
$this->package('cartalyst/sentry', 'cartalyst/sentry', __DIR__ . '/../../vendor/cartalyst');
}
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
$this->registerHasher();
$this->registerUserProvider();
$this->registerGroupProvider();
$this->registerThrottleProvider();
$this->registerSession();
$this->registerCookie();
$this->registerSentry();
}
/**
* Register the hasher used by Sentry.
*
* @return void
*/
protected function registerHasher()
{
$this->app['sentry.hasher'] = $this->app->share(function($app)
{
$hasher = $app['config']['cartalyst/sentry::hasher'];
switch ($hasher)
{
case 'native':
return new NativeHasher;
break;
case 'bcrypt':
return new BcryptHasher;
break;
case 'sha256':
return new Sha256Hasher;
break;
case 'whirlpool':
return new WhirlpoolHasher;
break;
}
throw new \InvalidArgumentException("Invalid hasher [$hasher] chosen for Sentry.");
});
}