Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未使用Amazon S3上的Laravel medialibrary创建Laravel媒体转换_Php_Amazon S3_Laravel 5.2 - Fatal编程技术网

Php 未使用Amazon S3上的Laravel medialibrary创建Laravel媒体转换

Php 未使用Amazon S3上的Laravel medialibrary创建Laravel媒体转换,php,amazon-s3,laravel-5.2,Php,Amazon S3,Laravel 5.2,我正在使用来处理产品模型的文件附件。我希望将所有产品图像上传到AmazonS3,然后将每个图像自动转换为不同的大小(即“拇指”、“小”、“中”、“大”),如图所示 当使用本地文件系统时,一切都很好。软件包创建转换,我可以用我的应用程序访问它们。当我尝试更改包的设置以使用AmazonS3而不是本地文件存储时,问题就出现了 因此,在我的ImageController.php中,我有以下行: $product->addMedia(public_path() . '/temp/products/'

我正在使用来处理产品模型的文件附件。我希望将所有产品图像上传到AmazonS3,然后将每个图像自动转换为不同的大小(即“拇指”、“小”、“中”、“大”),如图所示

当使用本地文件系统时,一切都很好。软件包创建转换,我可以用我的应用程序访问它们。当我尝试更改包的设置以使用AmazonS3而不是本地文件存储时,问题就出现了

因此,在我的
ImageController.php
中,我有以下行:

$product->addMedia(public_path() . '/temp/products/'.$product->id)->toCollection('images', 's3');
config/filesystems.php中的S3配置

's3' => [
        'driver' => 's3',
        'key' => env('AMAZON_S3_ID'),
        'secret' => env('AMAZON_S3_KEY'),
        'region' => env('AMAZON_S3_REGION'),
        'bucket' => env('AMAZON_S3_BUCKET'),
        'visibility' => 'public'
    ],
以及我的
Product.php
类中的转换设置:

public function registerMediaConversions()
{
    $this->addMediaConversion('thumb')
         ->setManipulations(['w' => 160, 'h' => 120])
         ->performOnCollections('images');

    $this->addMediaConversion('small')
         ->setManipulations(['w' => 280, 'h' => 210])
         ->performOnCollections('images');

    $this->addMediaConversion('medium')
         ->setManipulations(['w' => 400, 'h' => 300])
         ->performOnCollections('images');

    $this->addMediaConversion('large')
         ->setManipulations(['w' => 640, 'h' => 480])
         ->performOnCollections('images');
}

正如我前面提到的,如果我使用本地文件系统,一切都会很好,但是一旦我将其更改为使用AmazonS3,文件转换就不会创建。原始文件已成功上载到Amazon,但没有转换。有什么建议吗?

我不知道为什么,但什么时候添加nonQueued()。这对我很有用

public function registerMediaConversions()
{
    $this->addMediaConversion('thumb')
         ->setManipulations(['w' => 160, 'h' => 120])
         ->performOnCollections('images')
         ->nonQueued();

    $this->addMediaConversion('small')
         ->setManipulations(['w' => 280, 'h' => 210])
         ->performOnCollections('images')
         ->nonQueued();

    $this->addMediaConversion('medium')
         ->setManipulations(['w' => 400, 'h' => 300])
         ->performOnCollections('images')
         ->nonQueued();

    $this->addMediaConversion('large')
         ->setManipulations(['w' => 640, 'h' => 480])
         ->performOnCollections('images')
         ->nonQueued();
}

因为转换作为“队列”工作,所以服务器不设置队列


阅读更多Laravel文档

可能您尚未使用
php artisan队列:工作
php artisan队列:侦听启动队列工作程序。还要确认您已在
.env
文件中正确设置了队列配置(如
queue\u CONNECTION