将 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 共享主机