Imagick和用户www-data

时间:2017-06-15 19:24:30

标签: php apache symfony nginx imagick

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

  • Nginx作为反向代理并提供静态内容
  • Apache作为网络服务器
  • 数据库的Mysql

所有文件归root用户所有,apache和nginx服务器在用户www-data下运行。应用运行正常。

只有php conjobs(在主机上以root身份运行)才会生成新图像并将它们存储在服务器上。首先,它使用权限0755创建一个dir,代码如下:

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

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

    $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手动更改权限,则图像会正确显示。

有关如何使用正确的前提直接存储图像的任何建议吗?

1 个答案:

答案 0 :(得分:0)

你能使用PHP chmod

吗?

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

创建文件后?