我在 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>
我可能参加聚会迟到了,但是... 从来没有......从来没有!对任何事情都做
chmod 777
。
这是一个巨大的安全风险。
当涉及到通过 Apache 或 NGINX 等 Web 服务器提供的文件时,一些常规权限适用于大多数情况。
第一件事是您所服务的目录中的任何文件都不需要拥有执行权限。
当网络服务器提供这些文件时,它只需要能够读取它们。
通常,对于 Web 服务器中的文件,您需要对文件使用 644 权限,对目录使用 755 权限。
您有多种选择:
a) 使用 web 的子目录来保存您的用户文件,例如 web/temp
b) 将它们放在其他地方并根据需要将它们复制到 Web 子文件夹中。这就是 symfony 对资产所做的事情
c) 创建一个新的控制器,拦截“temp/{user}/{filename}”等路由,然后从保存文件的目录中提供这些文件。