将 laravel 应用程序部署到共享主机并得到“未指定应用程序加密密钥”。错误

Posted

技术标签:

【中文标题】将 laravel 应用程序部署到共享主机并得到“未指定应用程序加密密钥”。错误【英文标题】:Deploy a laravel application to shared hosting and get "No application encryption key has been specified." error 【发布时间】:2019-06-13 19:00:24 【问题描述】:

我正在尝试在共享主机上部署我的 laravel 5.7 应用程序,但得到“未指定应用程序加密密钥。”。我在本地主机上运行 php artisan key:generate 并重新部署应用程序后,但没有工作。

可能有什么问题?

【问题讨论】:

【参考方案1】:

如果您已经运行php artisan key:generate,则运行php artisan config:clear 以清除配置缓存。

【讨论】:

(并确保php artisan key:generate 正常工作 - 在.env 文件中应该有一个APP_KEY 条目。 您使用的是什么主机?如果它是基于 git 的,是否可以忽略 .env【参考方案2】:

我在我的本地主机上运行 php artisan key:generate 并在重新部署应用程序后,但没有工作。

.env 通常不(也不应该永远)部署为源代码的一部分。 Laravel 的 .gitignore 阻止 .env 被检入源代码控制,因为它可能包含不应该检入 Github 的高度敏感信息。

您需要在您的主机上运行php artisan key:generate (或将.env 文件上传到其中)。您还需要在主机上填写 .env 文件以及数据库密码等其他关键详细信息 - 您在 localhost 上定义的任何内容也需要在主机上进行定义。

【讨论】:

是的,好的...但是共享主机有几个限制。例如,大多数不提供使用 cmd 的方法,因此绝对不可能运行 artisan 命令。 @clesmalo 这就是为什么(or upload a .env file to it) 在我的答案中。 是的,你做了,但是,上传文件本身是不够的,因为(根据我的阅读)你仍然需要使用 php artisan config:clear 清除配置缓存。如果有人觉得这很有用,您可以通过 php.ini 运行 artisan 命令。例如,您可以创建此路由并访问它会执行 config:clear 命令:Route::get('/artisan',function() Artisan::call('config:clear'); return 'Configuration cache has been cleared!'; ); 如果你已经缓存了配置,你只需要清除配置缓存。如果您无法通过 SSH 连接到共享主机,您可能还没有缓存配置,因为这样做需要运行命令。【参考方案3】:

我遇到了同样的问题,但经过大量搜索我找到了解决方案。 我不确定这是否是一个好的解决方案,因为我不是网络开发人员, 无论如何将以下代码放在项目名称\config\app.php中

‘key’ => env(‘APP_KEY’, ‘base64:insert key here’),

从 .env 文件中复制密钥

【讨论】:

以上是关于将 laravel 应用程序部署到共享主机并得到“未指定应用程序加密密钥”。错误的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Laravel 5.5 应用部署到 Godaddy cPanel 共享主机

Laravel 部署共享主机子域

sh 将laravel项目部署到共享主机提供商

部署 laravel + vuejs 到共享主机

共享主机 Laravel 8 主机问题:Symlink 不工作

sh 设置laravel5项目以部署到共享主机提供程序