Lumen Passport return 500 除了成功登录请求

Lumen Passport return 500 except successfully log in request

我已经在本地和免费的 Heroku 中创建了 Lumen Passport 并成功创建了它。现在我正在数字海洋中创建我的生产流明 VPS。我的所有应用程序都工作正常,并且在应该是失败响应时给出良好的错误响应格式,除了我的登录。在我的登录中,当正确的电子邮件和密码时,它会通过良好的响应,但在其他情况下 returns 500。

这是我在 LoginService.php

中的代码
public function generate_token($email, $password){
    // $token = Http::post(config('service.passport.login_endpoint'), [
    //     'grant_type' => 'password',
    //     'client_id' => config('service.passport.client_id'),
    //     'client_secret' => config('service.passport.client_secret'),
    //     'username' => $email,
    //     'password' => $password,
    // ]);

    // return $token->json();
    $http = new Client;
    try {
        $response = $http->post(config('service.passport.login_endpoint'), [
            'form_params' => [
                'grant_type' => 'password',
                'client_id' => config('service.passport.client_id'),
                'client_secret' => config('service.passport.client_secret'),
                'username' => $email,
                'password' => $password,
            ]
        ]);
        return [true, $response->getBody()];
    } catch (ClientException $e) {
        $response = $e->getResponse();
        $responseBodyAsString = $response->getBody()->getContents();
        return [false, Psr7\str($e->getResponse())];
        // return $responseBodyAsString;
    }
}

public function login($email, $password){
    $login = $this->generate_token($email, $password);

    // if(isset($login['error'])){
    //     $response = [
    //         "success" => false, 
    //         "message" => (object)[
    //             "errorInfo" => [
    //                 "status" => 401,
    //                 "reason" => $login['error'],
    //                 "server_code" => 401,
    //                 "status_detail" => $login['error_description']
    //             ]
    //         ],
    //         "status" => 401
    //     ];
    // } else {
    //     $response = [
    //         "success" => true,
    //         "data" => [
    //             "message" => "success generate token",
    //             "token" => $login['access_token']
    //         ],
    //         "status" => 200
    //     ];
    // }
    if($login[0]){
        $response = [
            "success" => true,
            "data" => json_decode($login[1]),
            "status" => 200
        ];
    } else {
        $response = [
            "success" => true,
            "data" => $login[1],
            "status" => 200
        ];
    }


    return $response;
}

这是我服务器的错误日志

2022/02/08 09:11:58 [error] 61359#61359: *4187 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught UnexpectedValueException: The stream or file "/var/www/html/ims/storage/logs/lumen-2022-02-08.log" could not be opened in append mode: failed to open stream: Permission denied in /var/www/html/ims/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:111
Stack trace:
#0 /var/www/html/ims/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php(121): Monolog\Handler\StreamHandler->write()
#1 /var/www/html/ims/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(42): Monolog\Handler\RotatingFileHandler->write()
#2 /var/www/html/ims/vendor/monolog/monolog/src/Monolog/Logger.php(317): Monolog\Handler\AbstractProcessingHandler->handle()
#3 /var/www/html/ims/vendor/monolog/monolog/src/Monolog/Logger.php(539): Monolog\Logger->addRecord()
#4 /var/www/html/ims/vendor/illuminate/log/Logger.php(174): Monolog\Logger->error()
#5 /var/www/html/ims/vendor/illuminate/log/Logger.php(87): Illuminate\Log\Logger->writeLog()
#6 /var/www/html/...PHP message: PHP Fatal error:  Uncaught UnexpectedValueException: The stream or file "/var/www/html/ims/storage/logs/lumen-2022-02-08.log" could not be opened in append mode: failed to open stream: Permission denied in /var/www/html/ims/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:111
Stack trace:
#0 /var/www/html/ims/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php(121): Monolog\Handler\StreamHandler->write()
#1 /var/www/html/ims/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(42): Monolog\Handler\RotatingFileHandler->write()
#2 /var/www/html/ims/vendor/monolog/monolog/src/Monolog/Logger.php(317): Monolog\Handler\AbstractProcessingHandler->handle()
#3 /var/www/html/ims/vendor/monolog/monolog/src/Monolog/Logger.php(539): Monolog\Logger->addRecord()
#4 /var/www/html/ims/vendor/illuminate/log/Logger.php(174): Monolog\Logger->error()
#5 /var/www/html/ims/vendor/illuminate/log/Logger.php(87):

这是我的存储和日志中的权限和用户列表

root@mighty-app-1:/var/www/html/ims# ll
total 444
drwxr-xr-x 14 root www-data   4096 Feb  7 23:30 ./
drwxr-xr-x  4 root root       4096 Feb  3 17:17 ../
-rw-r--r--  1 root root        220 Feb  7 07:14 .editorconfig
-rwxr-xr-x  1 root root        586 Feb  7 23:30 .env*
-rw-r--r--  1 root root        293 Feb  7 07:14 .env.example
drwxr-xr-x  8 root www-data   4096 Feb  8 07:12 .git/
-rw-r--r--  1 root root         87 Feb  7 07:14 .gitignore
-rw-r--r--  1 root root         71 Feb  7 07:14 .styleci.yml
drwxr-xr-x  2 root www-data   4096 Feb  7 07:14 .vscode/
-rw-r--r--  1 root root        121 Feb  7 07:14 Procfile
-rw-r--r--  1 root root       1585 Feb  7 07:14 README.md
drwxr-xr-x 13 root www-data   4096 Feb  7 07:14 app/
-rwxr-xr-x  1 root root       1094 Feb  7 07:14 artisan*
drwxr-xrwx  2 root www-data   4096 Feb  7 07:14 bootstrap/
-rw-r--r--  1 root root       1463 Feb  7 07:14 composer.json
-rw-r--r--  1 root root     355645 Feb  7 07:14 composer.lock
drwxr-xr-x  2 root www-data   4096 Feb  7 07:14 config/
drwxr-xr-x  5 root www-data   4096 Feb  3 17:01 database/
-rw-r--r--  1 root root        756 Feb  7 07:14 phpunit.xml
drwxr-xr-x  3 root www-data   4096 Feb  8 07:12 public/
drwxr-xr-x  3 root www-data   4096 Feb  3 17:01 resources/
drwxr-xr-x  2 root www-data   4096 Feb  7 07:14 routes/
drwxr-xrwx  5 root www-data   4096 Feb  7 07:14 storage/
drwxr-xr-x  2 root www-data   4096 Feb  7 07:14 tests/
drwxr-xr-x 60 root root       4096 Feb  4 03:49 vendor/
root@mighty-app-1:/var/www/html/ims# cd storage
root@mighty-app-1:/var/www/html/ims/storage# ll
total 36
drwxr-xrwx  5 root www-data 4096 Feb  7 07:14 ./
drwxr-xr-x 14 root www-data 4096 Feb  7 23:30 ../
-rw-r--r--  1 root root     6148 Feb  7 07:14 .DS_Store
drwxr-xrwx  2 root www-data 4096 Feb  7 07:14 app/
drwxr-xrwx  4 root www-data 4096 Feb  7 07:14 framework/
drwxr-xrwx  2 root www-data 4096 Feb  7 10:24 logs/
-rw-r--r--  1 root root     3292 Feb  7 23:30 oauth-private.key
-rw-r--r--  1 root root      812 Feb  7 23:30 oauth-public.key
root@mighty-app-1:/var/www/html/ims/storage# cd logs/
root@mighty-app-1:/var/www/html/ims/storage/logs# ll
total 108
drwxr-xrwx 2 root www-data  4096 Feb  7 10:24 ./
drwxr-xrwx 5 root www-data  4096 Feb  7 07:14 ../
-rw-r--r-- 1 root root        14 Feb  7 07:14 .gitignore
-rwxr-xrwx 1 root root     93743 Feb  4 11:13 lumen-2022-02-04.log*
root@mighty-app-1:/var/www/html/ims/storage/logs# 

我已经尝试了一些方法来检查回复是否无法读取或其他什么的,但似乎缺少一些我无法得到的东西。

除了这个,我没有发现其他与我的案例相似的案例,但这也不能解决我的问题。

谁能给我一些提示?提前致谢

经过一段时间的寻找答案,问题是因为我的存储文件夹有root用户权限。它通过使用这样的命令授予用户和组对 www-data 的权限来解决

sudo chown -R www-data:www-data /var/www/<project_name>/storage

特别感谢@Peppermintology 给我很多提示