FriendsOfShopware / FroshPlatformBunnycdnMediaStorage

This plugin allows you to use BunnyCDN as a media storage.
MIT License
8 stars 9 forks source link

Last Modified only accepts files as parameters, not directories #78

Closed SimonBKohlschein closed 5 months ago

SimonBKohlschein commented 6 months ago

PHP Version

8.2.18

Shopware Version

6.5.8.8

Plugin Version

3.3.1

Actual behaviour

The website outputs an error 500:

Can not render @Storefront/storefront/page/content/index.html.twig view: An exception has been thrown during the rendering of a template ("Last Modified only accepts files as parameters, not directories"). with these parameters: {"themeIconConfig":[]}

Expected behaviour

The website should render.

Steps to Reproduce?

I am not exactly sure what is causing the problem. It only happens if BunnyCDN is enabled for themes. If the theme folder does not exist in BunnyCDN, then there is no error. If I compile the theme or manually upload it from the local file system to bunnycdn the error occurs.

We have two diffrent storage zones on bunnycdn. With only one of them, the error occurs. It works fine with the other one. I already tried deleting everything from the storage zone and re-upload everything. The error still occurs.

We tried disabling all other plugins and using the default theme.

tinect commented 6 months ago

Hi @SimonBKohlschein,

The error is thrown by the library we use here: https://github.com/PlatformCommunity/flysystem-bunnycdn/blob/30cc7fc469c513f9d6e57a720d1a8fbf88064239/src/BunnyCDNAdapter.php#L377

Could you please change the lines 376 to 377 in vendor/platformcommunity/flysystem-bunnycdn/src/BunnyCDNAdapter.php: from

} catch (TypeError) {
    throw new UnableToRetrieveMetadata('Last Modified only accepts files as parameters, not directories');

to

} catch (TypeError $e) {
throw new UnableToRetrieveMetadata(sprintf('Last Modified only accepts files as parameters, not directories for path %s. Trace: %s', $path, $e->getTraceAsString()));

And then send me the message it is now throwing?

SimonBKohlschein commented 6 months ago

Last Modified only accepts files as parameters, not directories for path theme/ce206a6a951d49b0b7c6e8a5a25b85ec/assets. Trace:

0 /usr/www/users/kohlsw/sw_shopware/vendor/tinect/flysystem-garbage/src/GarbageFilesystemAdapter.php(100): PlatformCommunity\Flysystem\BunnyCDN\BunnyCDNAdapter->lastModified()

1 /usr/www/users/kohlsw/sw_shopware/vendor/league/flysystem/src/Filesystem.php(161): Tinect\Flysystem\Garbage\GarbageFilesystemAdapter->lastModified()

2 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/core/Framework/Adapter/Asset/FlysystemLastModifiedVersionStrategy.php(51): League\Flysystem\Filesystem->lastModified()

3 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/core/Framework/Adapter/Asset/FlysystemLastModifiedVersionStrategy.php(30): Shopware\Core\Framework\Adapter\Asset\FlysystemLastModifiedVersionStrategy->getLastModified()

4 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/storefront/Theme/ThemeAssetPackage.php(40): Shopware\Core\Framework\Adapter\Asset\FlysystemLastModifiedVersionStrategy->applyVersion()

5 /usr/www/users/kohlsw/sw_shopware/vendor/symfony/asset/Packages.php(104): Shopware\Storefront\Theme\ThemeAssetPackage->getUrl()

6 /usr/www/users/kohlsw/sw_shopware/vendor/symfony/twig-bridge/Extension/AssetExtension.php(48): Symfony\Component\Asset\Packages->getUrl()

7 /usr/www/users/kohlsw/sw_shopware/var/cache/dev_h545f493a74f1290da120881e9990db7f/twig/1e/1e622fce8f6a85dddfdf6b6d893ef04451a2f62ed453743e4d0d2fba9be3a694.php(1385): Symfony\Bridge\Twig\Extension\AssetExtension->getAssetUrl()

8 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Template.php(171): __TwigTemplate_2f3731bd7bd99d92ef09bffd2467ad24->block_layout_head_javascript_assets_public_path()

9 /usr/www/users/kohlsw/sw_shopware/var/cache/dev_h545f493a74f1290da120881e9990db7f/twig/1e/1e622fce8f6a85dddfdf6b6d893ef04451a2f62ed453743e4d0d2fba9be3a694.php(221): Twig\Template->displayBlock()

10 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Template.php(171): __TwigTemplate_2f3731bd7bd99d92ef09bffd2467ad24->block_layout_head_inner()

11 /usr/www/users/kohlsw/sw_shopware/var/cache/dev_h545f493a74f1290da120881e9990db7f/twig/1e/1e622fce8f6a85dddfdf6b6d893ef04451a2f62ed453743e4d0d2fba9be3a694.php(90): Twig\Template->displayBlock()

12 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Template.php(394): __TwigTemplate_2f3731bd7bd99d92ef09bffd2467ad24->doDisplay()

13 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Template.php(367): Twig\Template->displayWithErrorHandling()

14 /usr/www/users/kohlsw/sw_shopware/var/cache/dev_h545f493a74f1290da120881e9990db7f/twig/a0/a035b0dd809548b87bf85713fbb3388b5e18a2fec9db46ef20411482e768156a.php(50): Twig\Template->display()

15 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Template.php(394): __TwigTemplate_be26bbb52668a9bbefbaf4a07fd2065e->doDisplay()

16 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Template.php(367): Twig\Template->displayWithErrorHandling()

17 /usr/www/users/kohlsw/sw_shopware/var/cache/dev_h545f493a74f1290da120881e9990db7f/twig/bf/bf9d5064d6057b0335dbeb00cd1c53db23a53885115ba071c8dcbd5b85ff521b.php(160): Twig\Template->display()

18 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Template.php(171): __TwigTemplate_9b2c706137ff7ba0b8c1926ead17a0de->block_base_head()

19 /usr/www/users/kohlsw/sw_shopware/var/cache/dev_h545f493a74f1290da120881e9990db7f/twig/bf/bf9d5064d6057b0335dbeb00cd1c53db23a53885115ba071c8dcbd5b85ff521b.php(85): Twig\Template->displayBlock()

20 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Template.php(394): __TwigTemplate_9b2c706137ff7ba0b8c1926ead17a0de->doDisplay()

21 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Template.php(367): Twig\Template->displayWithErrorHandling()

22 /usr/www/users/kohlsw/sw_shopware/var/cache/dev_h545f493a74f1290da120881e9990db7f/twig/f1/f1759c9c2e6019ae517f87647d36e577d5444870d2cdc2d076630ced3b671f10.php(54): Twig\Template->display()

23 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Template.php(394): __TwigTemplate_35e565bc23cf8bc10de4f5bb77a8578c->doDisplay()

24 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Template.php(367): Twig\Template->displayWithErrorHandling()

25 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Template.php(379): Twig\Template->display()

26 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/TemplateWrapper.php(38): Twig\Template->render()

27 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Environment.php(280): Twig\TemplateWrapper->render()

28 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/storefront/Controller/StorefrontController.php(281): Twig\Environment->render()

29 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/storefront/Controller/StorefrontController.php(295): Shopware\Storefront\Controller\StorefrontController->renderView()

30 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/storefront/Controller/StorefrontController.php(92): Shopware\Storefront\Controller\StorefrontController->render()

31 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/core/Profiling/Profiler.php(67): Shopware\Storefront\Controller\StorefrontController->Shopware\Storefront\Controller{closure}()

32 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/storefront/Controller/StorefrontController.php(92): Shopware\Core\Profiling\Profiler::trace()

33 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/storefront/Controller/NavigationController.php(39): Shopware\Storefront\Controller\StorefrontController->renderStorefront()

34 /usr/www/users/kohlsw/sw_shopware/vendor/symfony/http-kernel/HttpKernel.php(181): Shopware\Storefront\Controller\NavigationController->home()

35 /usr/www/users/kohlsw/sw_shopware/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\Component\HttpKernel\HttpKernel->handleRaw()

36 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/core/Framework/Adapter/Kernel/HttpKernel.php(63): Symfony\Component\HttpKernel\HttpKernel->handle()

37 /usr/www/users/kohlsw/sw_shopware/vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php(86): Shopware\Core\Framework\Adapter\Kernel\HttpKernel->handle()

38 /usr/www/users/kohlsw/sw_shopware/vendor/symfony/http-kernel/HttpCache/HttpCache.php(473): Symfony\Component\HttpKernel\HttpCache\SubRequestHandler::handle()

39 /usr/www/users/kohlsw/sw_shopware/vendor/symfony/http-kernel/HttpCache/HttpCache.php(448): Symfony\Component\HttpKernel\HttpCache\HttpCache->forward()

40 /usr/www/users/kohlsw/sw_shopware/vendor/symfony/http-kernel/HttpCache/HttpCache.php(346): Symfony\Component\HttpKernel\HttpCache\HttpCache->fetch()

41 /usr/www/users/kohlsw/sw_shopware/vendor/symfony/http-kernel/HttpCache/HttpCache.php(221): Symfony\Component\HttpKernel\HttpCache\HttpCache->lookup()

42 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/core/Framework/Adapter/Kernel/HttpCacheKernel.php(72): Symfony\Component\HttpKernel\HttpCache\HttpCache->handle()

43 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/core/Kernel.php(157): Shopware\Core\Framework\Adapter\Kernel\HttpCacheKernel->handle()

44 /usr/www/users/kohlsw/sw_shopware/vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php(35): Shopware\Core\Kernel->handle()

45 /usr/www/users/kohlsw/sw_shopware/vendor/autoload_runtime.php(29): Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner->run()

46 /usr/www/users/kohlsw/sw_shopware/public/index.php(15): require_once('/usr/www/users/...')

47 {main}

tinect commented 6 months ago

Could you try by disabling the garbage-option for this filesystem?

SimonBKohlschein commented 6 months ago

The error seems to be pretty much the same. The line difference is probably caused by us upgrading to Shopware 6.5.8.9:

0 /usr/www/users/kohlsw/sw_shopware/vendor/league/flysystem/src/Filesystem.php(161): PlatformCommunity\Flysystem\BunnyCDN\BunnyCDNAdapter->lastModified()

1 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/core/Framework/Adapter/Asset/FlysystemLastModifiedVersionStrategy.php(51): League\Flysystem\Filesystem->lastModified()

2 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/core/Framework/Adapter/Asset/FlysystemLastModifiedVersionStrategy.php(30): Shopware\Core\Framework\Adapter\Asset\FlysystemLastModifiedVersionStrategy->getLastModified()

3 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/storefront/Theme/ThemeAssetPackage.php(40): Shopware\Core\Framework\Adapter\Asset\FlysystemLastModifiedVersionStrategy->applyVersion()

4 /usr/www/users/kohlsw/sw_shopware/vendor/symfony/asset/Packages.php(104): Shopware\Storefront\Theme\ThemeAssetPackage->getUrl()

5 /usr/www/users/kohlsw/sw_shopware/vendor/symfony/twig-bridge/Extension/AssetExtension.php(48): Symfony\Component\Asset\Packages->getUrl()

6 /usr/www/users/kohlsw/sw_shopware/var/cache/dev_hf9b01486cb9c5d66d7151f857b3e2c45/twig/ef/ef503cd4fbf4b7f88aa2c5f3f707057d0c7ebebb8b4a2416d37baa3581092bc1.php(1385): Symfony\Bridge\Twig\Extension\AssetExtension->getAssetUrl()

7 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Template.php(171): __TwigTemplate_2f3731bd7bd99d92ef09bffd2467ad24->block_layout_head_javascript_assets_public_path()

8 /usr/www/users/kohlsw/sw_shopware/var/cache/dev_hf9b01486cb9c5d66d7151f857b3e2c45/twig/ef/ef503cd4fbf4b7f88aa2c5f3f707057d0c7ebebb8b4a2416d37baa3581092bc1.php(221): Twig\Template->displayBlock()

9 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Template.php(171): __TwigTemplate_2f3731bd7bd99d92ef09bffd2467ad24->block_layout_head_inner()

10 /usr/www/users/kohlsw/sw_shopware/var/cache/dev_hf9b01486cb9c5d66d7151f857b3e2c45/twig/ef/ef503cd4fbf4b7f88aa2c5f3f707057d0c7ebebb8b4a2416d37baa3581092bc1.php(90): Twig\Template->displayBlock()

11 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Template.php(394): __TwigTemplate_2f3731bd7bd99d92ef09bffd2467ad24->doDisplay()

12 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Template.php(367): Twig\Template->displayWithErrorHandling()

13 /usr/www/users/kohlsw/sw_shopware/var/cache/dev_hf9b01486cb9c5d66d7151f857b3e2c45/twig/a4/a404d9d5c99fc45a684b35550ddcb78b5c086bbe5a0408b99d4c8451ebb7ba80.php(160): Twig\Template->display()

14 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Template.php(171): __TwigTemplate_9b2c706137ff7ba0b8c1926ead17a0de->block_base_head()

15 /usr/www/users/kohlsw/sw_shopware/var/cache/dev_hf9b01486cb9c5d66d7151f857b3e2c45/twig/a4/a404d9d5c99fc45a684b35550ddcb78b5c086bbe5a0408b99d4c8451ebb7ba80.php(85): Twig\Template->displayBlock()

16 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Template.php(394): __TwigTemplate_9b2c706137ff7ba0b8c1926ead17a0de->doDisplay()

17 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Template.php(367): Twig\Template->displayWithErrorHandling()

18 /usr/www/users/kohlsw/sw_shopware/var/cache/dev_hf9b01486cb9c5d66d7151f857b3e2c45/twig/4d/4d3e885e84dfccba373c099ecb7a703b1700cdefdb20088716011cb228dc8e1b.php(54): Twig\Template->display()

19 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Template.php(394): __TwigTemplate_35e565bc23cf8bc10de4f5bb77a8578c->doDisplay()

20 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Template.php(367): Twig\Template->displayWithErrorHandling()

21 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Template.php(379): Twig\Template->display()

22 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/TemplateWrapper.php(38): Twig\Template->render()

23 /usr/www/users/kohlsw/sw_shopware/vendor/twig/twig/src/Environment.php(280): Twig\TemplateWrapper->render()

24 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/storefront/Controller/StorefrontController.php(281): Twig\Environment->render()

25 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/storefront/Controller/StorefrontController.php(295): Shopware\Storefront\Controller\StorefrontController->renderView()

26 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/storefront/Controller/StorefrontController.php(92): Shopware\Storefront\Controller\StorefrontController->render()

27 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/core/Profiling/Profiler.php(67): Shopware\Storefront\Controller\StorefrontController->Shopware\Storefront\Controller{closure}()

28 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/storefront/Controller/StorefrontController.php(92): Shopware\Core\Profiling\Profiler::trace()

29 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/storefront/Controller/NavigationController.php(39): Shopware\Storefront\Controller\StorefrontController->renderStorefront()

30 /usr/www/users/kohlsw/sw_shopware/vendor/symfony/http-kernel/HttpKernel.php(181): Shopware\Storefront\Controller\NavigationController->home()

31 /usr/www/users/kohlsw/sw_shopware/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\Component\HttpKernel\HttpKernel->handleRaw()

32 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/core/Framework/Adapter/Kernel/HttpKernel.php(63): Symfony\Component\HttpKernel\HttpKernel->handle()

33 /usr/www/users/kohlsw/sw_shopware/vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php(86): Shopware\Core\Framework\Adapter\Kernel\HttpKernel->handle()

34 /usr/www/users/kohlsw/sw_shopware/vendor/symfony/http-kernel/HttpCache/HttpCache.php(473): Symfony\Component\HttpKernel\HttpCache\SubRequestHandler::handle()

35 /usr/www/users/kohlsw/sw_shopware/vendor/symfony/http-kernel/HttpCache/HttpCache.php(448): Symfony\Component\HttpKernel\HttpCache\HttpCache->forward()

36 /usr/www/users/kohlsw/sw_shopware/vendor/symfony/http-kernel/HttpCache/HttpCache.php(346): Symfony\Component\HttpKernel\HttpCache\HttpCache->fetch()

37 /usr/www/users/kohlsw/sw_shopware/vendor/symfony/http-kernel/HttpCache/HttpCache.php(221): Symfony\Component\HttpKernel\HttpCache\HttpCache->lookup()

38 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/core/Framework/Adapter/Kernel/HttpCacheKernel.php(72): Symfony\Component\HttpKernel\HttpCache\HttpCache->handle()

39 /usr/www/users/kohlsw/sw_shopware/vendor/shopware/core/Kernel.php(157): Shopware\Core\Framework\Adapter\Kernel\HttpCacheKernel->handle()

40 /usr/www/users/kohlsw/sw_shopware/vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php(35): Shopware\Core\Kernel->handle()

41 /usr/www/users/kohlsw/sw_shopware/vendor/autoload_runtime.php(29): Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner->run()

42 /usr/www/users/kohlsw/sw_shopware/public/index.php(15): require_once('/usr/www/users/...')

43 {main}

tinect commented 6 months ago

It is a directory on that path theme/ce206a6a951d49b0b7c6e8a5a25b85ec/assets? Or is there also a file with that name?

There appears to be an unwanted issue within the used adapter-library: https://github.com/PlatformCommunity/flysystem-bunnycdn/pull/74

Additionally, There is no dedicated check intended within the flysystem-library. I updated the issue on that board, too, hoping there will be more real-world tests in future.

SimonBKohlschein commented 6 months ago

theme/ce206a6a951d49b0b7c6e8a5a25b85ec/assets is a directory.

Thanks for the help

tinect commented 6 months ago

@SimonBKohlschein Please try out the plugin version 3.3.2.

SimonBKohlschein commented 5 months ago

This fixes the problem