craftcms / cms

Build bespoke content experiences with Craft.
https://craftcms.com
Other
3.22k stars 627 forks source link

[4.4.0-beta.2]: Imager-X transform fails if filesystem doesn't have public urls #12737

Closed wsydney76 closed 1 year ago

wsydney76 commented 1 year ago

What happened?

Description

Posting this here because it worked in 4.3.10 and is likely a breaking change.

2023-02-24 10:44:27 [web.ERROR] [spacecatninja\imagerx\exceptions\ImagerException] spacecatninja\imagerx\exceptions\ImagerException: Cannot assign null to property spacecatninja\imagerx\models\LocalSourceImageModel::$url of type string in /var/www/html/vendor/spacecatninja/imager-x/src/services/ImagerService.php:498
Stack trace:
#0 /var/www/html/vendor/spacecatninja/imager-x/src/variables/ImagerVariable.php(33): spacecatninja\imagerx\services\ImagerService->transformImage(Object(craft\elements\Asset), Array, NULL, NULL)
#1 /var/www/html/vendor/twig/twig/src/Extension/CoreExtension.php(1607): spacecatninja\imagerx\variables\ImagerVariable->transformImage(Object(craft\elements\Asset), Array)
#2 /var/www/html/vendor/craftcms/cms/src/helpers/Template.php(111): twig_get_attribute(Object(craft\web\twig\Environment), Object(Twig\Source), Object(spacecatninja\imagerx\variables\ImagerVariable), 'transformImage', Array, 'method', false, false)
#3 /var/www/html/storage/runtime/compiled_templates/dd/dd8e74694812342dc730dbdaf2ed1c6b.php(44): craft\helpers\Template::attribute(Object(craft\web\twig\Environment), Object(Twig\Source), Object(spacecatninja\imagerx\variables\ImagerVariable), 'transformImage', Array, 'method')
#4 /var/www/html/vendor/twig/twig/src/Template.php(394): __TwigTemplate_7de11e1a155982228c1a6ebac3c71e4e->doDisplay(Array, Array)
#5 /var/www/html/vendor/twig/twig/src/Template.php(367): Twig\Template->displayWithErrorHandling(Array, Array)
#6 /var/www/html/vendor/twig/twig/src/Template.php(379): Twig\Template->display(Array)
#7 /var/www/html/vendor/twig/twig/src/TemplateWrapper.php(40): Twig\Template->render(Array, Array)
#8 /var/www/html/vendor/twig/twig/src/Environment.php(277): Twig\TemplateWrapper->render(Array)
#9 /var/www/html/vendor/craftcms/cms/src/web/View.php(446): Twig\Environment->render('test/imager', Array)
#10 /var/www/html/vendor/craftcms/cms/src/web/View.php(499): craft\web\View->renderTemplate('test/imager', Array)
#11 /var/www/html/vendor/craftcms/cms/src/web/TemplateResponseFormatter.php(56): craft\web\View->renderPageTemplate('test/imager', Array, 'site')
#12 /var/www/html/vendor/yiisoft/yii2/web/Response.php(1098): craft\web\TemplateResponseFormatter->format(Object(craft\web\Response))
#13 /var/www/html/vendor/craftcms/cms/src/web/Response.php(286): yii\web\Response->prepare()
#14 /var/www/html/vendor/yiisoft/yii2/web/Response.php(339): craft\web\Response->prepare()
#15 /var/www/html/vendor/yiisoft/yii2/base/Application.php(390): yii\web\Response->send()
#16 /var/www/html/web/index.php(12): yii\base\Application->run()

Steps to reproduce

  1. Setup a volume with a local filesystem with Files in this filesystem have public URLs is set to false.
  2. Run this template:
    
    {% set image = craft.assets.filename('myimage.jpg').one %}

{% set transformedImage = craft.imager.transformImage(image, { width: 1000 }) %}



Workaround for now:  Set `has public URLs`to true.

### Expected behavior

Transform is generated.

### Actual behavior

It is not.

### Craft CMS version

4.4.0-beta.2

### PHP version

8.1.13

### Operating system and version

Linux 5.15.79.1-microsoft-standard-WSL2

### Database type and version

MySQL 10.4.27

### Image driver and version

Imagick 3.7.0 (ImageMagick 6.9.11-60)

### Installed plugins and versions

- Imager X 4.1.10
brandonkelly commented 1 year ago

Thanks for reporting! 4.4.0-beta.3 is out with a fix for this (via #12739).