Imagick 和用户 www-data 的权限问题
Permission issue with Imagick and user www-data
我有一个用 Symfony2 构建的应用程序。该应用程序在三个 Docker 容器中运行:
- Nginx 作为反向代理并提供静态内容
- Apache 作为网络服务器
- Mysql 数据库
所有文件都归 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);
创建文件后?
我有一个用 Symfony2 构建的应用程序。该应用程序在三个 Docker 容器中运行:
- Nginx 作为反向代理并提供静态内容
- Apache 作为网络服务器
- Mysql 数据库
所有文件都归 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);
创建文件后?