首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >第245行的ConnectionFactory.php中的不同错误- Laravel 5.4

第245行的ConnectionFactory.php中的不同错误- Laravel 5.4
EN

Stack Overflow用户
提问于 2018-05-29 21:00:04
回答 2查看 1.7K关注 0票数 8

我已经将问题更新了几次,但原始问题基本保持不变,因此我的思考过程更容易理解。我已经为每个人添加了一个简短的摘要,以决定他们是否能够在这方面提供帮助。任何帮助都是非常感谢的。

摘要

  • 错误很少发生(每2-4周发生一次)。
  • 错误发生后,每隔一次访问数据库的请求也会崩溃,并出现相同的错误
  • 在创建MySqlConnector时出现的错误似乎只发生在此应用程序的实时服务器上,因此我们不能离开该错误并开始调试,而是必须对其进行热修复以保持正常运行时间。
  • 我们确实遇到了一些连接随机断开(很少)的问题。这几乎是在同一时刻开始的。也许问题是在建立PDO连接时连接断开了?

堆栈

  • Apache 2.4.32
  • PHP Apache 10.2.6

详细问题

我们在其中一个laravel项目中遇到了以下错误:

代码语言:javascript
复制
[2018-05-29 11:02:05] production.ERROR:
Symfony\Component\Debug\Exception\FatalThrowableError: Illegal offset type in C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connectors\ConnectionFactory.php:245
Stack trace:
#0 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connectors\ConnectionFactory.php(183): Illuminate\Database\Connectors\ConnectionFactory->createConnector(Array)
#1 [internal function]: Illuminate\Database\Connectors\ConnectionFactory->Illuminate\Database\Connectors\{closure}()
#2 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(883): call_user_func(Object(Closure))
#3 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(445): Illuminate\Database\Connection->getPdo()
#4 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(640): Illuminate\Database\Connection->Illuminate\Database\{closure}('insert into `lo...', Array)
#5 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(607): Illuminate\Database\Connection->runQueryCallback('insert into `lo...', Array, Object(Closure))
#6 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(450): Illuminate\Database\Connection->run('insert into `lo...', Array, Object(Closure))
#7 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(404): Illuminate\Database\Connection->statement('insert into `lo...', Array)
#8 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Query\Processors\Processor.php(32): Illuminate\Database\Connection->insert('insert into `lo...', Array)
#9 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(2138): Illuminate\Database\Query\Processors\Processor->processInsertGetId(Object(Illuminate\Database\Query\Builder), 'insert into `lo...', Array, 'id')
#10 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php(1251): Illuminate\Database\Query\Builder->insertGetId(Array, 'id')
#11 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(684): Illuminate\Database\Eloquent\Builder->__call('insertGetId', Array)
#12 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(649): Illuminate\Database\Eloquent\Model->insertAndSetId(Object(Illuminate\Database\Eloquent\Builder), Array)
#13 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(518): Illuminate\Database\Eloquent\Model->performInsert(Object(Illuminate\Database\Eloquent\Builder))
#14 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php(734): Illuminate\Database\Eloquent\Model->save()
#15 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Support\helpers.php(950): Illuminate\Database\Eloquent\Builder->Illuminate\Database\Eloquent\{closure}(Object(App\Error))
#16 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php(735): tap(Object(App\Error), Object(Closure))
#17 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(1357): Illuminate\Database\Eloquent\Builder->create(Array)
#18 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(1369): Illuminate\Database\Eloquent\Model->__call('create', Array)
#19 C:\Webserver\Websites\www.somedomain.com\webroot\app\Exceptions\Handler.php(246): Illuminate\Database\Eloquent\Model::__callStatic('create', Array)
#20 C:\Webserver\Websites\www.somedomain.com\webroot\app\Exceptions\Handler.php(217): App\Exceptions\Handler->logErrorAndNotify(Array, Object(Symfony\Component\Debug\Exception\FatalThrowableError))
#21 C:\Webserver\Websites\www.somedomain.com\webroot\app\Exceptions\Handler.php(106): App\Exceptions\Handler->logThenRenderServerException(Object(Illuminate\Http\Request), Object(Symfony\Component\Debug\Exception\FatalThrowableError), 500)
#22 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(326): App\Exceptions\Handler->render(Object(Illuminate\Http\Request), Object(Symfony\Component\Debug\Exception\FatalThrowableError))
#23 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(124): Illuminate\Foundation\Http\Kernel->renderException(Object(Illuminate\Http\Request), Object(Symfony\Component\Debug\Exception\FatalThrowableError))
#24 C:\Webserver\Websites\www.somedomain.com\webroot\public\index.php(53): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#25 {main}  

一旦这个错误第一次发生,所有对网站的请求都会触发完全相同的错误。

在谷歌上搜索这个问题,我发现了以下两个解决方案:

run php artisan config:cache or php artisan config:clear

  • restart
  1. php artisan config:cache

(运行web服务器或运行web服务器

找到这些解决方案的一个示例可以在here找到

现在重启web服务器起作用了,但在一个小时内,同样的问题又出现了。又重新启动了一次,现在看起来是有效的,但我想知道是什么导致了这种情况,以及我们如何防止它发生?

更多信息:

  • 我们使用Redis来缓存包括config.
  • Hosting在内的所有东西都是使用一个自定义的apache堆栈完成的。
  • 这个网站已经运行了几个月,进行了几次重启,但从未遇到过这个问题。
  • 今天第一次出现这个问题时,服务器已经填满了它的内存容量,第二次出现这个问题时,它还剩下15 GB的内存。

任何线索或建议都将不胜感激。如果需要更多的信息来回答这个问题,我会在被问到的时候尝试扩展这个问题。

更新:

所以我们让错误再次发生,相同的行,但不同的错误。我认为在建立PDO连接时出了问题,然后这个连接被存储起来,以便在一段时间内再次用于所有未来的请求?

这是新的堆栈跟踪:

代码语言:javascript
复制
[2018-06-25 15:27:38] production.ERROR: Symfony\Component\Debug\Exception\FatalThrowableError: Undefined class constant 'PDO::ATTR_CASE' in C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connectors\ConnectionFactory.php:245
Stack trace:
#0 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connectors\ConnectionFactory.php(183): Illuminate\Database\Connectors\ConnectionFactory->createConnector(Array)
#1 [internal function]: Illuminate\Database\Connectors\ConnectionFactory->Illuminate\Database\Connectors\{closure}()
#2 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(883): call_user_func(Object(Closure))
#3 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(904): Illuminate\Database\Connection->getPdo()
#4 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(392): Illuminate\Database\Connection->getReadPdo()
#5 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(318): Illuminate\Database\Connection->getPdoForSelect(true)
#6 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(640): Illuminate\Database\Connection->Illuminate\Database\{closure}('select * from `...', Array)
#7 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(607): Illuminate\Database\Connection->runQueryCallback('select * from `...', Array, Object(Closure))
#8 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Connection.php(326): Illuminate\Database\Connection->run('select * from `...', Array, Object(Closure))
#9 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(1710): Illuminate\Database\Connection->select('select * from `...', Array, true)
#10 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(1695): Illuminate\Database\Query\Builder->runSelect()
#11 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php(462): Illuminate\Database\Query\Builder->get(Array)
#12 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php(446): Illuminate\Database\Eloquent\Builder->getModels(Array)
#13 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Concerns\BuildsQueries.php(75): Illuminate\Database\Eloquent\Builder->get(Array)
#14 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php(391): Illuminate\Database\Eloquent\Builder->first(Array)
#15 C:\Webserver\Websites\www.somedomain.com\webroot\app\Http\Controllers\Webshop\HomeController.php(268): Illuminate\Database\Eloquent\Builder->firstOrFail()
#16 [internal function]: App\Http\Controllers\Webshop\HomeController->showArticleDetail('BOSAL-287-273-1...')
#17 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Controller.php(55): call_user_func_array(Array, Array)
#18 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php(44): Illuminate\Routing\Controller->callAction('showArticleDeta...', Array)
#19 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Route.php(203): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(App\Http\Controllers\Webshop\HomeController), 'showArticleDeta...')
#20 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Route.php(160): Illuminate\Routing\Route->runController()
#21 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Router.php(574): Illuminate\Routing\Route->run()
#22 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(30): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#23 C:\Webserver\Websites\www.somedomain.com\webroot\app\Http\Middleware\Localization.php(43): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#24 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): App\Http\Middleware\Localization->handle(Object(Illuminate\Http\Request), Object(Closure))
#25 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#26 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Middleware\SubstituteBindings.php(41): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#27 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#28 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#29 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken.php(65): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#30 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#31 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#32 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\View\Middleware\ShareErrorsFromSession.php(49): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#33 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#34 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#35 C:\Webserver\Websites\www.somedomain.com\webroot\app\Http\Middleware\ConfigureBugsnap.php(36): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#36 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): App\Http\Middleware\ConfigureBugsnap->handle(Object(Illuminate\Http\Request), Object(Closure))
#37 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#38 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Session\Middleware\StartSession.php(64): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#39 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#40 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#41 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse.php(37): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#42 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#43 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#44 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Cookie\Middleware\EncryptCookies.php(59): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#45 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#46 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#47 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#48 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Router.php(576): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#49 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Router.php(535): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#50 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Router.php(513): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#51 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(176): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#52 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(30): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))
#53 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\spatie\laravel-robots-middleware\src\RobotsMiddleware.php(14): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#54 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Spatie\RobotsMiddleware\RobotsMiddleware->handle(Object(Illuminate\Http\Request), Object(Closure))
#55 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#56 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php(30): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#57 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#58 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#59 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php(30): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#60 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#61 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#62 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\ValidatePostSize.php(27): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#63 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure))
#64 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#65 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode.php(46): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#66 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(148): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
#67 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#68 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#69 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(151): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#70 C:\Webserver\Websites\www.somedomain.com\webroot\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#71 C:\Webserver\Websites\www.somedomain.com\webroot\public\index.php(53): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#72 {main}

错误行再次出现在来自laravel/framework的ConnectionFactory的第245行。这一行是来自下面函数的return new MySQLConnector;行:

代码语言:javascript
复制
/**
 * Create a connector instance based on the configuration.
 *
 * @param  array  $config
 * @return \Illuminate\Database\Connectors\ConnectorInterface
 *
 * @throws \InvalidArgumentException
 */
public function createConnector(array $config)
{
    if (! isset($config['driver'])) {
        throw new InvalidArgumentException('A driver must be specified.');
    }

    if ($this->container->bound($key = "db.connector.{$config['driver']}")) {
        return $this->container->make($key);
    }

    switch ($config['driver']) {
        case 'mysql':
            return new MySqlConnector;
        case 'pgsql':
            return new PostgresConnector;
        case 'sqlite':
            return new SQLiteConnector;
        case 'sqlsrv':
            return new SqlServerConnector;
    }

    throw new InvalidArgumentException("Unsupported driver [{$config['driver']}]");
}

MySqlConnector类扩展了Connector类。Connecter的前几行是:

代码语言:javascript
复制
<?php

namespace Illuminate\Database\Connectors;

use PDO;
use Exception;
use Illuminate\Support\Arr;
use Doctrine\DBAL\Driver\PDOConnection;
use Illuminate\Database\DetectsLostConnections;

class Connector
{
    use DetectsLostConnections;

    /**
     * The default PDO connection options.
     *
     * @var array
     */
    protected $options = [
        PDO::ATTR_CASE => PDO::CASE_NATURAL,
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL,
        PDO::ATTR_STRINGIFY_FETCHES => false,
        PDO::ATTR_EMULATE_PREPARES => false,
    ];

似乎应该设置PDO::ATTR_CASE。或者可能PDO::CASE_NATURAL也没有设置?我不完全理解到底发生了什么,但在创建新的MySqlConnecter对象或创建底层连接器时,它会返回未设置的错误。首先,我认为这与类中的一些函数有关。但是看到Trace在创建时停止,这意味着错误不可能真正来自任何函数。

所以我认为在使用PDO类时一定出了什么问题?Connecter.php在开头还有下面一行:'use Doctrine\DBAL\Driver\PDOConnection;‘,它也扩展了PDO。

一旦发生这种情况,每个用户的后续请求都会返回相同的堆栈跟踪错误,直到我们重新启动Apache,我完全不理解这一点。似乎在PDO文件不可用的情况下可能会发生这种情况,但我不确定为什么总是发生这种情况,为什么重启Apache可以解决这个问题。

以下是可能有助于解决此问题的子问题:

  1. 是什么原因导致此错误出现?
  2. 如果上面的问题不能轻松回答,我可以做些什么来更好地了解此问题?这种情况在我们的实际环境中很少发生,所以我们没有机会把dd的应用程序放在各处一步一步地进行。而且每次重启Apache时都必须使用快速修复程序。
  3. 为什么在初始失败后的每个请求都会失败,并返回相同的错误?
EN

回答 2

Stack Overflow用户

发布于 2018-06-04 16:50:48

我们最后一次尝试重启了Apache,以及MySQL。(按此顺序)似乎已经解决了问题。以防我们当晚也重启服务器。

这为我们解决了问题,但如果有人对导致问题的原因有更好的答案,我希望他们能分享他们的知识!

编辑:仍未修复,似乎是临时修复。

票数 3
EN

Stack Overflow用户

发布于 2018-06-29 05:59:39

到目前为止,这里有三个建议:

  • 确保您的数据库配置设置正确并以这种方式保存(因此在服务器端读取的变量不会发生任何变化...不仅来自.env文件)。这可能与缓存和当前数据库设置之间的某种冲突有关。仔细看一看;
  • 确保你的php版本符合laravel 5.4的要求,因为这种类型的错误很容易由当前php版本中不存在的语法引起,这些语法在某个给定的时间点在后台的某个地方被使用,从那里后台服务器上的工作corrupted;
  • This可能与你正在使用的php版本的PDO PDO驱动程序的可用性有关,所以给定的关于PDO类中的东西的功能片段是不可访问的。对我来说,这听起来很合理,所以你可以更深入地挖掘这个问题。重点关注正在使用的某些PHP和PDO模块的设置。

此外,应该关注服务器端配置错误(如apache或服务器管理),因为错误输入可能会传递到基本的laravel层,并导致意外行为。不幸的是,堆栈跟踪和错误周围的信息不足以准确地诊断问题。尽管如此,请继续关注,这似乎很有趣。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50585081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档