当文件大小大于2mb时,Laravel文件上传失败

7
昨天我发布了一个早期的测试版网站。它叫vrep.io,但我遇到了一个奇怪的问题。当上传大于2MB的图片(用户头像)时,laravel验证器会返回“validation.uploaded”错误信息。
验证器代码:
protected function basicValidator( array $data ) {
    return Validator::make( $data, [
        'name'        => 'required|min:2|max:255',
        'occupation'  => 'max:255',
        'avatar'      => 'mimes:jpeg,png,gif|dimensions:min_width=500,min_height=500|max:8000',
        'drop-avatar' => 'in:1,0',
    ],
        [
            'avatar.mimes'      => 'Uploaded file format should be jpeg, jpg, png or gif.',
            'avatar.dimensions' => 'Image should have minimum 500x500px dimensions.',
            'avatar.max'        => 'Maximum allowed file size is 6 MB.',
        ] );
}

我更改了当前的php.ini文件参数:

upload_max_filesize   100M
post_max_size         100M
memory_limit          256M

它运行在 AWS EC2 实例上,使用的是 UBUNTU 16.04 和 Nginx。

我还对 nginx 配置文件进行了更改:

$ sudo vim /etc/nginx/sites-available/default

client_max_body_size 100m;

重新启动了nginx和php,甚至重新启动了整个Web服务器。没有效果。上传大于2mb的文件仍然出现相同的错误。
附注:我在本地运行Homestead,文件上传没有任何问题。问题只出现在生产服务器上。
我错过了什么?

你能添加你的验证代码和完整的错误信息吗? - Paras
我已经添加了验证器代码,整个错误消息是“validation.uploaded”。 - Nick Surmanidze
1
我认为你正在错误的文件中进行更改...有两个PHP配置文件。 - lewis4u
2个回答

6

我不知道为什么,即使我一整天在寻找答案,最后在这里发布帖子几分钟后就会找到解决方案。SO上有些魔力。

所以我正在编辑错误的php.ini文件。我通过ssh检查哪个php ini文件被使用,如下:

$ php --ini

然而,它显示的文件并不正确。由于某种原因,实际的配置文件是不同的。

现在我把php信息转储出来:

<?php
phpinfo();
?>

我找到了实际的配置文件,一切正常运作。希望这能帮助到某些人。


你节省了我很多时间。 - gbalduzzi
天啊!我遇到了和你一模一样的问题。我编辑了nginx配置文件和php.ini文件,但都没有用。我感到很沮丧,决定在SO上提问,就在发布前,你的问题被推荐给了我。我简直不敢相信我只是编辑了错误的php.ini文件!谢谢你发表这个解决方案。我非常感激,因为我花了将近两天时间来解决这个问题! - Praise Dare
你救了我的一天...为什么默认只有2MB的大小 - undefined

1
有时候你安装php-fpm后必须更改特定的ini文件。 查找文件位置更好的方法是使用“locate”命令:
$ locate php.ini

/etc/php5/cgi/php.ini
/etc/php5/cli/php.ini
/etc/php5/fpm/php.ini

现在如果您安装了php-fpm,则必须更改fpm文件夹中的php.ini。

非常感谢!我一直在更改cli文件夹中的那个(/etc/php/8.1/cli/php.ini),而不是fpm文件夹中的那个(/etc/php/8.1/fpm/php.ini)。 - Rob.Kachmar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接