上传大小大于1MB的图像时出错

时间:2019-10-02 19:58:51

标签: php laravel image-optimization

我以前在服务器上上传图像没有任何问题,但是在安装Spatie larave-image-optimizer之后,我遇到了一些问题。我可以上传小于1MB的任何图像,但是任何超出的大小都会破坏它

我试图通过控制台记录日志或转储错误,以便可以了解发生了什么,但是我不明白错误消息告诉我什么。

$validate = Validator::make($request->all(), [
        'docs.*' => [
            'sometimes',
            'image',
            'mimes:jpeg,png,jpg,gif,svg',
            'max:51200',
        ],
    ]);

    if ($validate->fails()) {
        return response(['error' => 'Error!'], 422);
    }

    if ($request->file('docs')) {
        foreach ($request->file('docs') as $doc => $image) {
            $image->storeAs(
                '/folder/' . $id , //I get this id from the params
                $image->getClientOriginalName(),
                'public'
            );
        }
    }

这条路线经过图像优化器中间件

    Route::middleware('optimizeImages')->group(function () {
        Route::post("url", "...Controller@store");
    });`

我收到此错误:

    exception: "InvalidArgumentException"
    file: "{app_path}\vendor\spatie\image-> optimizer\src\Image.php"
    line: 14
    message: "`` does not exist"

为什么1MB的映像会上浮,而2MB以上的映像却不会?以及如何解决此问题?

请记住,在安装此软件包之前,一切正常。我上传了许多4MB以上的图片,但是我需要对其进行优化,以便有效地使用服务器的磁盘。

编辑#1 如果我不使用中间件,则会出错:

    exception: "RuntimeException"
    file: "{app_path}\vendor\symfony\var-dumper\Server\Connection.php"
    line: 63
    message: "stream_socket_sendto(): A request to send or receive data was 
    disallowed because the socket is not connected and (when sending on a 
    datagram socket using a sendto call) no address was supplied.↵↵"

2 个答案:

答案 0 :(得分:3)

转到您的php.ini文件并进行更改

upload_max_filesize = 10M
post_max_size = 10M

之后,请确保您重新启动apache服务器

答案 1 :(得分:2)

在您的php.ini中更改值,例如-

memory_limit=32M
upload_max_filesize=24M
post_max_size=32M

重新启动服务器。尝试使用composer update。如果不起作用,请删除您的spatie/laravel-image-optimizer,然后再次安装-composer require spatie/laravel-image-optimizer,然后发布php artisan vendor:publish --provider="Spatie\LaravelImageOptimizer\ImageOptimizerServiceProvider"