AWS API路由返回500

时间:2015-12-12 03:57:29

标签: php api amazon-web-services

我最近将我的Laravel API部署到AWS ElasticBeanStalk。

我想测试API是否正在运行,所以我做了一个简单的路由来返回一条消息。在本地,它工作正常:

http://my-api.localhost/

输出Welcome

但是在AWS上,我得到了:

http://my-api.elasticbeanstalk.com/

输出Whoops, looks like something went wrong.(输出两次)

这是一个500错误,没有太多其他有用的信息。

我打开调试模式并得到:

RuntimeException in EncryptionServiceProvider.php line 29:
No supported encrypter found. The cipher and / or key length are invalid.

查找此错误并找到this,其中说我将config\app.php密码更改为:

'cipher' => 'AES-256-CBC',

但它已经是那个价值了。

然后它说确保.env APP_KEY是32位,我的是。

localhost和aws应用程序之间的请求标头看起来类似。存在差异,但我认为没有任何差异会返回500.我通过SSH连接到AWS EC2以验证路由是否相同。

路线:

Route::group(['middleware' => 'cors'], function(Router $router) {

    Route::get('/', function () {
        return 'Welcome';
    });
class EncryptionServiceProvider extends ServiceProvider
{
Encryption Service Provider:

    public function register()
    {
        $this->app->singleton('encrypter', function ($app) {
            $config = $app->make('config')->get('app');

            $key = $config['key'];

            $cipher = $config['cipher'];

            if (Encrypter::supported($key, $cipher)) {
                return new Encrypter($key, $cipher);
            } elseif (McryptEncrypter::supported($key, $cipher)) {
                return new McryptEncrypter($key, $cipher);
            } else {
                throw new RuntimeException('No supported encrypter found. The cipher and / or key length are invalid.');
            }
        });
    }

1 个答案:

答案 0 :(得分:0)

糟糕,忘了将ENV vars添加到AWS app实例。

1)转到app-> configuration |>软件配置

2)在您的本地.env添加环境变量并指定生产的唯一值

3)验证ENV vars是通过SSH连接到服务器,然后cd /opt/elasticbeanstalk/support并运行cat envvars在EC2上注册的。应列出ENV变量。

4)然后用source envvars

执行envvars

5)输出ENV vars以验证它们是否已在应用程序中设置:echo env $APP_KEY将吐出已设置的ENV