【问题标题】:Uploads in Symfony's var directory not accessibleSymfony 的 var 目录中的上传无法访问
【发布时间】:2017-12-12 10:19:56
【问题描述】:

我正在尝试将文件上传到“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; 我的错在哪里?

附:此外,我尝试在我的 docker-compose 文件中使用卷(我正在使用 docker),如下所示:- ./data/cabinet/uploads/images:/data/www/cabinet/var/uploads/images 不幸的是,没有一个文件没有复制到这个目录。怎么了?

谢谢!

【问题讨论】:

    标签: symfony docker routes var


    【解决方案1】:

    由于文档根目录指向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
    

    【讨论】:

    • 关于符号链接: docker-compose in voluems 中的第一行是:- ./data/cabinet/uploads/images:/var/www/html/data/cabinet/uploads/images 和第二行是: ln -s /var/www/html/web/var /var/www/html/var/data/uploads 是吗?
    • 这是一个单行。我用那个反斜杠打破了它,所以它在屏幕上完全可见,而且它仍然是一个有效的命令。您可以通过 docker-compose 执行它,也可以进入容器并在其中执行命令。此外,在内部使用 cd 测试符号链接时,它确实有效。
    • 哦,谢谢。你能再帮我一个吗...我的老板希望它是一个相对的符号链接,但我不明白如何实现它
    猜你喜欢
    • 1970-01-01
    • 2018-03-09
    • 2019-08-06
    • 2016-05-21
    • 2012-07-10
    • 2017-09-26
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多