【问题标题】:Lumen throws 500 sometimes when sending API request?发送 API 请求时 Lumen 有时会抛出 500?
【发布时间】:2015-08-21 05:10:46
【问题描述】:

我正在客户端使用anuglarJs 和服务器端的Lumen 为REST API 开发应用程序。我的.env 配置如下,

APP_ENV=local
APP_DEBUG=TRUE
APP_KEY=XrPbyRlU5p0szSw5MrAQWwWim8C0MXjT

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=kainfo
DB_USERNAME=root
DB_PASSWORD=

CACHE_DRIVER=file
SESSION_DRIVER=file

并在 bootstrap/app.php 中启用 Dotenv::load(__DIR__.'/../');

我的问题是,有时Lumen 会抛出 500 异常并且在下一次刷新请求时运行良好。

错误日志是,

[2015-06-06 07:51:41] lumen.ERROR: exception 'PDOException' with message 'SQLSTATE[HY000] [1044] Access denied for user ''@'localhost' to database 'forge'' in C:\xampp\htdocs\Study\kasrodinfo\web\vendor\illuminate\database\Connectors\Connector.php:47

【问题讨论】:

  • 查看服务器中的错误日志以了解确切的问题。
  • @Blip 我用错误日志更新了问题
  • 从错误看来,您正在尝试使用空白用户名和文件 Connector.php 中的密码连接到数据库forge,并且连接被拒绝由mysql服务器。重新检查连接 - 正确的用户名、密码、数据库名称等。如果您没有发现错误或感到困惑,请发布带有必要问题详细信息的 Connector.php
  • 感谢您的评论,当我将数据库凭据直接放入数据库设置文件时,它工作正常。

标签: php angularjs laravel-5 lumen


【解决方案1】:

同样受此影响,以下是我们在此问题上的发现:

我们使用带有 Event MPM 的 Apache 2.4 和 PHP 7 的线程安全构建。这导致 env() 方法无法可靠响应 - 它可以在代码中的某一点为您提供正确的变量,然后只需往下几行它会返回别的东西。 (就像trevorg 遇到的默认变量一样。)

我们改用 prefork MPM,问题立即消失。

是的,与另一个 MPM 相比,prefork 在速度方面很糟糕,但 Apache、PHP 和/或 Laravel/Lumen 中的事件 MPM 和环境变量似乎存在一些问题。

【讨论】:

    【解决方案2】:

    需要在\vendor\laravel\lumen-framework\config\database.php文件中修改数据库、用户名、密码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-22
      • 2020-07-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 2021-07-31
      相关资源
      最近更新 更多