"php artisan key:generate" 给出 "No application encryption key has been specified." 错误
"php artisan key:generate" gives a "No application encryption key has been specified." error
我有一个克隆的 laravel 应用程序,但是当我尝试通过 php artisan key:generate 生成 APP_KEY 时,它给我一个错误:
In EncryptionServiceProvider.php line 42:
No application encryption key has been specified.
这很明显,因为这正是我想要创建的。有人知道如何调试这个命令吗?
更新:用这个 post laravel 4: key not being generated with artisan
修复了它
如果我在我的 .env 文件中填写 APP_KEY php artisan key:generate
就可以了。但是由于某些原因,通过 laravel new
和删除的 APP_KEY 新创建的应用程序可以 运行 php artisan key:generate
没有问题。
出于某种原因 php artisan key:generate 认为它需要 app_key 而实际上不需要。它也不会执行任何其他命令,它们都错误 "No application encryption key has been specified."
检查您的 .env
文件。存在吗?
php artisan key:generate
需要现有密钥才能工作。用 32 个字符填充 APP_KEY 并重新运行 命令使其生效。
编辑:由于某些原因,通过 laravel new 删除 APP_KEY 的新应用可以 运行 php artisan key:generate 没有问题。
一年后编辑:
真正的问题在于增加了 2 个提供商服务。 boot() 函数写得不好导致了这个问题。仍然不确定为什么它不起作用,但我会尝试为以后可能遇到相同问题的人找出答案。
有问题的两个文件
<?php
namespace App\Providers;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\ServiceProvider;
use Illuminate\Contracts\Routing\ResponseFactory;
class ResponseServiceProvider extends ServiceProvider
{
public function boot(ResponseFactory $factory){
parent::boot();
$factory->macro('api', function ($data=null, $code=null, $message=null) use ($factory) {
$customFormat = [
'status' => 'ok',
'code' => $code ? $code : 200,
'message' => $message ? $message : null,
'data' => $data
];
if ($data instanceof LengthAwarePaginator){
$paginationData = $data->toArray();
$pagination = isset($paginationData['current_page']) ? [
"total" => $paginationData['total'],
"per_page" => (int) $paginationData['per_page'],
"current_page" => $paginationData['current_page'],
"last_page" => $paginationData['last_page'],
"next_page_url" => $paginationData['next_page_url'],
"prev_page_url" => $paginationData['prev_page_url'],
"from" => $paginationData['from'],
"to" => $paginationData['to']
] : null;
if ($pagination){
$customFormat['pagination'] = $pagination;
$customFormat['data'] = $paginationData['data'];
}
}
return $factory->make($customFormat);
});
}
public function register(){
//
}
}
<?php
namespace App\Providers;
use App\Http\Controllers\Auth\SocialTokenGrant;
use Laravel\Passport\Bridge\RefreshTokenRepository;
use Laravel\Passport\Bridge\UserRepository;
use Laravel\Passport\Passport;
use Laravel\Passport\PassportServiceProvider;
use League\OAuth2\Server\AuthorizationServer;
/**
* Class CustomQueueServiceProvider
*
* @package App\Providers
*/
class SocialGrantProvider extends PassportServiceProvider{
/**
// * Bootstrap any application services.
// *
// * @return void
// */
public function boot(){
parent::boot();
app(AuthorizationServer::class)->enableGrantType($this->makeSocialRequestGrant(), Passport::tokensExpireIn());
}
/**
* Register the service provider.
*
* @return void
*/
public function register(){
}
/**
* Create and configure a SocialTokenGrant based on Password grant instance.
*
* @return SocialTokenGrant
*/
protected function makeSocialRequestGrant(){
$grant = new SocialTokenGrant(
$this->app->make(UserRepository::class),
$this->app->make(RefreshTokenRepository::class)
);
$grant->setRefreshTokenTTL(Passport::refreshTokensExpireIn());
return $grant;
}
}
php artisan key:generate 是在您的 .env 文件中创建 APP_KEY 值的命令。
当你 运行 composer create-project laravel/laravel 命令时,它会在 .env 文件中生成一个 APP_Key,但是当你通过 [=32= 检出一个新分支时] 或克隆一个新项目,.env 文件不会包含,所以你必须 运行 artisan key:generate 创建一个新的 APP_KEY.
你改变了你的问题。在这种情况下,您可以尝试一下。
php artisan key:generate
php artisan config:cache
如果您没有 vendor
文件夹,
1) 安装作曲家依赖项
composer install
2) 需要使用命令
生成应用程序密钥APP_KEY
php artisan key:generate
3) 在代码编辑器中打开项目,将 .env.example
重命名为 .env
并根据您的环境修改数据库名称、用户名和密码。
4) php artisan config:cache
使更改生效。
我有一个克隆的 laravel 应用程序,但是当我尝试通过 php artisan key:generate 生成 APP_KEY 时,它给我一个错误:
In EncryptionServiceProvider.php line 42:
No application encryption key has been specified.
这很明显,因为这正是我想要创建的。有人知道如何调试这个命令吗?
更新:用这个 post laravel 4: key not being generated with artisan
修复了它如果我在我的 .env 文件中填写 APP_KEY php artisan key:generate
就可以了。但是由于某些原因,通过 laravel new
和删除的 APP_KEY 新创建的应用程序可以 运行 php artisan key:generate
没有问题。
出于某种原因 php artisan key:generate 认为它需要 app_key 而实际上不需要。它也不会执行任何其他命令,它们都错误 "No application encryption key has been specified."
检查您的 .env
文件。存在吗?
php artisan key:generate
需要现有密钥才能工作。用 32 个字符填充 APP_KEY 并重新运行 命令使其生效。
编辑:由于某些原因,通过 laravel new 删除 APP_KEY 的新应用可以 运行 php artisan key:generate 没有问题。
一年后编辑: 真正的问题在于增加了 2 个提供商服务。 boot() 函数写得不好导致了这个问题。仍然不确定为什么它不起作用,但我会尝试为以后可能遇到相同问题的人找出答案。
有问题的两个文件
<?php
namespace App\Providers;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\ServiceProvider;
use Illuminate\Contracts\Routing\ResponseFactory;
class ResponseServiceProvider extends ServiceProvider
{
public function boot(ResponseFactory $factory){
parent::boot();
$factory->macro('api', function ($data=null, $code=null, $message=null) use ($factory) {
$customFormat = [
'status' => 'ok',
'code' => $code ? $code : 200,
'message' => $message ? $message : null,
'data' => $data
];
if ($data instanceof LengthAwarePaginator){
$paginationData = $data->toArray();
$pagination = isset($paginationData['current_page']) ? [
"total" => $paginationData['total'],
"per_page" => (int) $paginationData['per_page'],
"current_page" => $paginationData['current_page'],
"last_page" => $paginationData['last_page'],
"next_page_url" => $paginationData['next_page_url'],
"prev_page_url" => $paginationData['prev_page_url'],
"from" => $paginationData['from'],
"to" => $paginationData['to']
] : null;
if ($pagination){
$customFormat['pagination'] = $pagination;
$customFormat['data'] = $paginationData['data'];
}
}
return $factory->make($customFormat);
});
}
public function register(){
//
}
}
<?php
namespace App\Providers;
use App\Http\Controllers\Auth\SocialTokenGrant;
use Laravel\Passport\Bridge\RefreshTokenRepository;
use Laravel\Passport\Bridge\UserRepository;
use Laravel\Passport\Passport;
use Laravel\Passport\PassportServiceProvider;
use League\OAuth2\Server\AuthorizationServer;
/**
* Class CustomQueueServiceProvider
*
* @package App\Providers
*/
class SocialGrantProvider extends PassportServiceProvider{
/**
// * Bootstrap any application services.
// *
// * @return void
// */
public function boot(){
parent::boot();
app(AuthorizationServer::class)->enableGrantType($this->makeSocialRequestGrant(), Passport::tokensExpireIn());
}
/**
* Register the service provider.
*
* @return void
*/
public function register(){
}
/**
* Create and configure a SocialTokenGrant based on Password grant instance.
*
* @return SocialTokenGrant
*/
protected function makeSocialRequestGrant(){
$grant = new SocialTokenGrant(
$this->app->make(UserRepository::class),
$this->app->make(RefreshTokenRepository::class)
);
$grant->setRefreshTokenTTL(Passport::refreshTokensExpireIn());
return $grant;
}
}
php artisan key:generate 是在您的 .env 文件中创建 APP_KEY 值的命令。
当你 运行 composer create-project laravel/laravel 命令时,它会在 .env 文件中生成一个 APP_Key,但是当你通过 [=32= 检出一个新分支时] 或克隆一个新项目,.env 文件不会包含,所以你必须 运行 artisan key:generate 创建一个新的 APP_KEY.
你改变了你的问题。在这种情况下,您可以尝试一下。 php artisan key:generate php artisan config:cache
如果您没有 vendor
文件夹,
1) 安装作曲家依赖项
composer install
2) 需要使用命令
生成应用程序密钥APP_KEYphp artisan key:generate
3) 在代码编辑器中打开项目,将 .env.example
重命名为 .env
并根据您的环境修改数据库名称、用户名和密码。
4) php artisan config:cache
使更改生效。