“php artisan key:generate”返回“No application encryption key has been specified.”错误

k4aesqcs  于 2023-05-27  发布在  PHP
关注(0)|答案(5)|浏览(145)

我有一个克隆的laravel应用程序,但当我试图通过php artisan key:generate生成APP_KEY时,它给了我一个错误:

In EncryptionServiceProvider.php line 42:
No application encryption key has been specified.

这是显而易见的,因为这正是我试图创造的。有人知道如何调试这个命令吗?
更新:通过这篇文章修复了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,而实际上它并不需要。它也不会执行任何其他命令,它们都错误“未指定应用程序加密密钥”。

weylhg0b

weylhg0b1#

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;
    }
}
r1zhe5dt

r1zhe5dt2#

generate是一个在.env文件中创建APP_KEY值命令。
当你运行composer create-project laravel/laravel命令时,它会在.env文件中生成一个APP_Key,但是当你通过git checkout 一个新的分支或者克隆一个新的项目时,.env文件不会包含,所以你必须运行artisan key:generate来创建一个新的APP_KEY。
你改了问题。在这种情况下,您可以尝试一下。php artisan key:generate php artisan config:cache

juzqafwq

juzqafwq3#

如果您没有vendor文件夹,
1)安装composer依赖项

composer install

2)需要使用以下命令生成应用程序密钥APP_KEY

php artisan key:generate

3)在代码编辑器中打开项目,将.env.example重命名为.env,并根据您的环境修改数据库名称、用户名和密码。
4)php artisan config:cache以实现更改。

thtygnil

thtygnil4#

1.运行以下命令:php artisan配置:缓存
1.现在运行:php artisan key:generate
1.再次运行:php artisan配置:缓存

now u can check in console Application key set successfully.
mzaanser

mzaanser5#

检查您的.env文件。它存在吗?

相关问题