Sylius liip 想象:无法打开图像

J D*_*uis 5 php liipimaginebundle sylius symfony4

我正在处理 Sylius 1.5 项目,在我的本地环境中一切正常,但是在部署到我的开发环境时,我在过滤图像上遇到错误(使用 liip 想象过滤器)。

该环境由一个运行 sylius 的 docker php-apache 容器组成。主机代理对 docker 容器的请求。

这是我尝试在浏览器中加载图像的 url 时遇到的错误:

Unable to create image for path "b4/11/650996cb08ee2b5fef5dfc75b8b4.jpeg" and filter "sylius_shop_product_thumbnail". Message was "Unable to open image /var/www/html/public/media/image/b4/11/650996cb08ee2b5fef5dfc75b8b4.jpeg"
Run Code Online (Sandbox Code Playgroud)

错误发生在这里: in vendor/imagine/imagine/lib/Imagine/Gd/Imagine.php (line 96)

观察:

  • 图片路径好
  • 图像存在于文件系统上
  • PHP 设法使用 file_get_contents 从文件中读取数据
  • imagecreatefromstring 无法从数据创建资源

这是发生错误的代码:

    public function open($path)
    {
        $path = $this->checkPath($path);
        $data = @file_get_contents($path);

        if (false === $data) {
            throw new RuntimeException(sprintf('Failed to open file %s', $path));
        }

        $resource = @imagecreatefromstring($data);

        if (!is_resource($resource)) {
            throw new RuntimeException(sprintf('Unable to open image %s', $path));
        }

        return $this->wrap($resource, new RGB(), $this->getMetadataReader()->readFile($path));
    }
Run Code Online (Sandbox Code Playgroud)

我试过转储变量,似乎想象成功地从带有 file_get_contents 的文件中获取数据,但是 imagecreatefromstring 失败了。

这是apache配置:

NameVirtualHost 127.0.0.1:8000

Listen 127.0.0.1:8000
LimitRequestBody 10485760

<VirtualHost 127.0.0.1:8000>
  ProxyPreserveHost On
  DocumentRoot "/var/www/html"
  DirectoryIndex index.php
  <Directory "/var/www/html">
    AllowOverride All
    Allow from All
  </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

nginx配置:

server {
        listen 80;
        client_max_body_size 10M;
        server_name mydomain.com;

        location / {
                proxy_pass http://127.0.0.1:8092;
                include /etc/nginx/proxy_params;
        }

}
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚配置中是什么导致了这个问题。

Den*_*est 4

我不知道这是否是您的情况,但如果您使用 php7.4,您可能必须为 jpeg 显式配置 php-gd,如此处所述