无法访问 Symfony 的 var 目录中的上传
Uploads in Symfony's var directory not accessible
我正在尝试将文件上传到 'var' 目录(成功)。但是当我想从 'var' 中获取这个文件时,我只能观察到 No route found for "GET /var/uploads/images/....
结构:
- app
- bin
- src
- var
- cache
- logs
- uploads
- images
- vendor
- web
为了保存我使用的文件:'%kernel.project_dir%/var/uploads/images'
为了取文件:'/var/uploads/images/' . $fileName;
我的错误在哪里?
P.S。此外,我尝试在我的 docker-compose 文件中使用卷(我正在使用 docker),如下所示: - ./data/cabinet/uploads/images:/data/www/cabinet/var/uploads/images
而且,不幸的是,没有一个文件未复制到此目录。怎么了?
谢谢!
由于文档根目录指向 web
目录,因此不可能访问路径 ../var
。要么将上传存储在 web
目录中,要么在其中创建指向 var/data/uploads
:
的符号链接
// since I don't know your path tree inside the container
// I assume whole application is installed inside /var/www/html
// and this is the default working directory
docker-compose exec YOUR_CONTAINER_NAME \
ln -rs /var/www/html/var/data web/var
请记住,如果您使用的是 Apache 网络服务器,则必须启用 FollowSymLinks 选项,但很可能是这样。
关于第二个问题,多半是你映射了一个无效的目录,我猜应该是:
// yet again I assume whole application is inside the /var/www/html
./data/cabinet/uploads/images:/var/www/html/data/cabinet/uploads/images
这是某种制作吗?如果不是并且这只是一个正在进行的工作,那么您应该将整个本地目录映射为容器卷。这是通常在开发模式下完成的方式,因此映射为:
.:/var/www/html
我正在尝试将文件上传到 'var' 目录(成功)。但是当我想从 'var' 中获取这个文件时,我只能观察到 No route found for "GET /var/uploads/images/....
结构:
- app
- bin
- src
- var
- cache
- logs
- uploads
- images
- vendor
- web
为了保存我使用的文件:'%kernel.project_dir%/var/uploads/images'
为了取文件:'/var/uploads/images/' . $fileName;
我的错误在哪里?
P.S。此外,我尝试在我的 docker-compose 文件中使用卷(我正在使用 docker),如下所示: - ./data/cabinet/uploads/images:/data/www/cabinet/var/uploads/images
而且,不幸的是,没有一个文件未复制到此目录。怎么了?
谢谢!
由于文档根目录指向 web
目录,因此不可能访问路径 ../var
。要么将上传存储在 web
目录中,要么在其中创建指向 var/data/uploads
:
// since I don't know your path tree inside the container
// I assume whole application is installed inside /var/www/html
// and this is the default working directory
docker-compose exec YOUR_CONTAINER_NAME \
ln -rs /var/www/html/var/data web/var
请记住,如果您使用的是 Apache 网络服务器,则必须启用 FollowSymLinks 选项,但很可能是这样。
关于第二个问题,多半是你映射了一个无效的目录,我猜应该是:
// yet again I assume whole application is inside the /var/www/html
./data/cabinet/uploads/images:/var/www/html/data/cabinet/uploads/images
这是某种制作吗?如果不是并且这只是一个正在进行的工作,那么您应该将整个本地目录映射为容器卷。这是通常在开发模式下完成的方式,因此映射为:
.:/var/www/html