Laravel``$ user-> can(“ ...”)``抛出服务器错误500

时间:2020-05-17 11:11:31

标签: php laravel apache amazon-ec2 server

我在AWS(EC2)上托管了带有Laravel API的SPA。当您填写以下表单:http://ec2-52-59-214-55.eu-central-1.compute.amazonaws.com/register(随意这样做)时,服务器会在调用$user->can("...")方法的时候抛出错误,响应码为500。我在本地开发了该应用程序,并且在那里一切正常。

本地环境:

Windows 10 / XAMPP-Apache 2.4.41
PHP 7.4.4
Laravel 7.5.2

服务器环境:

Ubuntu 18.04 / Apache 2.4.29
PHP 7.4.6
Laravel 7.5.2

它使用spatie / laravel-permission进行角色管理,这也影响了Laravel框架提供的can方法。

这是导致错误的代码:

echo "Before store<br>";

        if($user->can("store files")) {                                                                                                                                                                                                                      echo "Inner store";

            // Store avatar
            if(isset($data["avatar"])) {
                if(!$data["avatar"]->isValid()) {
                    return reponse(null, 422);
                }

                // Check if avatar is new
                $current_avatar = $user->getAvatarAttribute();
                $store_images = get_new_files([$data["avatar"]], [$current_avatar]);


                if(isset($store_images[0])) {
                    // Create asset for avatar
                    $new_avatar = create_asset([
                        "file" => $store_images[0],
                        "user_id" => $user->id,
                        "type" => "avatar"
                    ]);

                    $new_avatar->save();
                }
            }
        }

        echo "After store<br>";

这是我猜想的错误,它是指if($user->can("...))被调用后脚本立即失败。

您知道如何解决该问题吗?

1 个答案:

答案 0 :(得分:0)

记录错误非常普遍,尤其是在配置为每日日志时。

https://laravel.com/docs/7.x/logging#configuration

具体查看“配置单通道和每日通道”部分,因为这允许在创建时设置日志文件的权限。

您可以临时更改日志的权限,如下所示:

sudo chmod 644 storage/log/.
相关问题