Imagick 和用户 www-data 的权限问题

Permission issue with Imagick and user www-data

我有一个用 Symfony2 构建的应用程序。该应用程序在三个 Docker 容器中运行:

所有文件都归 root 所有,apache 和 nginx 服务器在用户 www-data 下运行。该应用程序运行良好。

只有 php conjobs(在主机的根目录下运行)制作新图像并将它们存储在服务器上。首先它创建一个权限为 0755 的目录,代码如下:

@mkdir('path/..', 0755, true);

目录是使用这些权限正确创建的。然后它使用以下代码将图像存储在此目录中:

    $image = new \Imagick( 'path/filename.jpg' );

    $Width = $image->getImageWidth();
    $Height = $image->getImageHeight();

    if($Width > 1024 || $Height > 768) {
        $image->resizeImage($imgWith, $imgHeight, \Imagick::FILTER_LANCZOS, 0.9);
        $image->writeImage('path/new_filename.jpg');
    }

这些图像只存储在0600。因此用户www-data 无法读取/显示应用程序中的图像。如果我手动更改权限:chmod -R 0755 dir 那么图像就会正确显示。

关于如何以正确的方式直接存储图像有什么建议吗?

你可以使用 PHP chmod

chmod('path/new_filename.jpg', 0755);

创建文件后?