我在Symfony2中有一个应用程序构建。该应用程序在三个Docker容器中运行:
所有文件归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
手动更改权限,则图像会正确显示。
有关如何使用正确的前提直接存储图像的任何建议吗?
答案 0 :(得分:0)
你能使用PHP chmod
吗?chmod(' path / new_filename.jpg',0755);
创建文件后?