【发布时间】:2015-12-28 19:52:24
【问题描述】:
我有两个 Laravel API,它们都在我的本地开发机器上为一个 AngularJS 应用程序提供服务。当 Angular 页面向这两个 API 调用 POST 时,我遇到了一个奇怪的问题,它似乎使用了错误的数据库名称(它使用了另一个 Laravel 实例的数据库)。 Laravel 抛出一个异常,说 Table database.table not found,其中 database 是不正确的数据库。我已经尝试使用 Postman 调用每个 API,并且效果很好,而且我确信在这两个项目中都没有提及其他数据库。
在我看来,这似乎是一个缓存问题,其中 .env 文件可能由于某种原因在两个 Laravel 服务器之间被缓存和共享。两个 Laravel 应用程序都托管在 Apache 上。我已经尝试调用php artisan config:clear 并在 .htaccess 文件中设置了适当的标头以尝试防止任何缓存,但这些都不起作用。我也试过多个浏览器,清了缓存,还是一样的错误。
我希望能够使用 .env 文件,这样我就可以为我的开发服务器拥有一个独特的配置,因此我不想在 config/database.php 中硬编码数据库凭据。任何想法可能是什么问题?
两个 database.php 文件看起来像:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST'),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
唯一设置存储在.env中的位置
【问题讨论】:
-
我仍然没有解决这个问题,但作为一种临时解决方法,我现在只是根据 env('APP_ENV') 的值在 app/config/database.php 中定义数据库凭据,而不是将它们存储在 .env 文件中
-
停止服务器并再次运行(php artisan serve)
-
我也遇到了同样的问题。我得到了它的解决方案
php artisan optimize运行这个命令,这个命令将清除配置、路由和文件缓存,并将创建新的缓存。并且每次编辑路由或 .env 后都运行此命令。
标签: php mysql angularjs caching laravel-5.1