我正在使用Laravel(5.1)后端服务的AngularJS中构建SPA。最近我遇到了一个恼人的错误,一个服务器500或代码0错误,很难解释它是怎么来的,但让我尝试可能有人会理解我的问题的牙科公式。
当我启动我的AngularJS控制器时,我进行了几次服务器调用(通过服务的独立$ http调用)来检索我稍后可能需要在控制器中的信息。例如,
Functions.getGrades()
.then(function(response)
{
$scope.grades = response.data;
});
Subjects.offered()
.then(function(response)
{
$scope.subjects = response.data;
});
稍后我将这些变量(grades
或subjects
)传递给用于处理的服务。但是,这些函数在运行后随机返回代码500服务器错误,有时在运行后返回状态代码0。这是以随机的方式发生的,我很难指出导致它们弹出的情况。这让我经常出现空的Laravel-ised错误屏幕,如下所示。
有人在读我的想法吗?
答案 0 :(得分:0)
好的,在上面评论中给出的建议之后,我检查了我的Laravel日志文件(位于storage/logs/laravel.log
- Laravel 5.1),我发现大多数时间的主要错误都是这个:{{ 1}},加上另一个解释'PDOException' with message 'SQLSTATE[HY000] [1044] Access denied for user ''@'localhost' to database 'forge'' in ...
之类的东西。这些是关键的开场白。
在阅读另一个SO帖子here时,它部分地说:
我解决了,有时候laravel没有在.ENV中读取APP_KEY。并返回一个值“SomeRandomString”(默认在config / app.php中定义),并且出现错误“密钥长度无效”,因此解决方案是将APP_KEY的值复制到config /中的值'key' app.php,就是这样!我解决了!
这正是问题所在!从No valid encrypter found
到.env
加载DB参数时,Laravel有时无法读取环境变量,而是选择了回退默认回退选项(config/database.php
作为数据库名称和用户名forge
。 1}}用于APP_KEY)。因此,为了解决这个问题,我刚刚按照建议做了:将SomeRandomString
中的APP_KEY复制到.env
,并将默认数据库参数编辑为我正在使用的实际数据库名称和用户名/密码。就是这样,我没有污染。希望有人觉得这很有帮助。