LiipImagineBundle没有在生产环境上工作

时间:2016-07-30 15:33:14

标签: symfony liipimaginebundle vichuploaderbundle

我在LiipImagineBundle 1.6.0上使用Symfony 3.1.3并结合VichUploaderBundle 1.2.0dev上的一切正常,但在prod上他并没有保存缓存文件。图像正确保存,因此VichUploaderBundle没有问题。

config.yml:

vich_uploader:
    db_driver: orm # or mongodb or propel or phpcr
    mappings:
            pop_image:
                uri_prefix:         /images/pops
                upload_destination: %kernel.root_dir%/../web/images/pops
            ad_image:
                uri_prefix:         /images/ads
                upload_destination: %kernel.root_dir%/../web/images/ads
liip_imagine:
    resolvers:
       default:
          web_path: ~

    filter_sets:
        cache: ~
        square:
            quality: 75
            filters:
                thumbnail: { size: [400, 400], mode: outbound }

的routing.yml:

_liip_imagine:
    resource: "@LiipImagineBundle/Resources/config/routing.xml"

树枝:

...
<div class="image">
   <img src="{{ vich_uploader_asset(pop,'imageFile')|imagine_filter('square') }}" alt="{{ pop.question }}" width="100%" class="grayscale" />
   <span class="image-question">{{ pop.question }}</span>
</div>
...

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,但是LiipImagineBundle 2.1上有Symfony 4.2。 就我而言,我用于缓存图像的Nginx规则会覆盖LiipImagineBundle的路由。

    location / {
        # try to serve file directly, fallback to index.php
        try_files $uri /index.php$is_args$args;
    }

    location ~ ^/index\.php(/|$) {
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;

        # When you are using symlinks to link the document root to the
        # current version of your application, you should pass the real
        # application path instead of the path to the symlink to PHP
        # FPM.
        # Otherwise, PHP's OPcache may not properly detect changes to
        # your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
        # for more information).
        fastcgi_param  SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        # Prevents URIs that include the front controller. This will 404:
        # http://domain.tld/index.php/some-path
        # Remove the internal directive to allow URIs like this
        internal;
    }

    # Cache images.
    location ~* \.(?:ico|css|gif|jpe?g|png)$ {
        expires 30d;
        add_header Vary Accept-Encoding;
        access_log off;
    }

因此,我为/media/cache/resolve/添加了一个单独的位置:

    location ^~ /media/cache/resolve/ {
        try_files $uri /index.php$is_args$args;
    }

^~前缀告诉Nginx停止寻找其他位置(有关Nginx location priority的更多信息)。