Symfony2:访问网络之外的文件夹中的文件

问题描述 投票:0回答:2

我在 symfony2 中有一个页面,其中包含 java applet 和 javascript 函数,使 java applet 加载文件。这些文件取决于用户,每个文件都必须存储在用户文件夹中。

用户的文件夹位于 symfony 文件夹根目录 (/temp/) 中。现在我需要这些文件夹中的文件可用(就像资产?)。

// Controler ( What i have now )
$filepath = $this->get('kernel')->getRootDir().'/../temp/'.$userfolder;

// View ( what i would like -using twig )
{% set path = userfolder ~ '/' ~ filename %}
<a href="javascript:document.jmol.script('load {{ asset(path) }}; frame all');">link</a>
symfony twig symfony-2.1
2个回答
0
投票

我可能参加聚会迟到了,但是... 从来没有......从来没有!对任何事情都做

chmod 777
。 这是一个巨大的安全风险。

当涉及到通过 Apache 或 NGINX 等 Web 服务器提供的文件时,一些常规权限适用于大多数情况。
第一件事是您所服务的目录中的任何文件都不需要拥有执行权限。 当网络服务器提供这些文件时,它只需要能够读取它们。
通常,对于 Web 服务器中的文件,您需要对文件使用 644 权限,对目录使用 755 权限。


-1
投票
如果您的文档根目录位于 Web 目录,则您无法执行您想要执行的操作。这是“根”目录,这意味着您无法从浏览器访问该目录之外的任何内容。这是一件好事,否则浏览您网站的人将能够访问其他目录,例如您的应用程序安全配置等...

您有多种选择:

a) 使用 web 的子目录来保存您的用户文件,例如 web/temp

b) 将它们放在其他地方并根据需要将它们复制到 Web 子文件夹中。这就是 symfony 对资产所做的事情

c) 创建一个新的控制器,拦截“temp/{user}/{filename}”等路由,然后从保存文件的目录中提供这些文件。

© www.soinside.com 2019 - 2024. All rights reserved.