【问题标题】:Symfony 4 - Build-in webserver - Ignore some paths from the routing processSymfony 4 - 内置网络服务器 - 忽略路由过程中的一些路径
【发布时间】:2025-12-29 15:35:12
【问题描述】:

我在我的开发环境中使用 PHP 内置 Web 服务器运行 Symfony 4 应用程序。

我希望我的主机上的 /tmp 文件夹从 Symfony 路由过程中被忽略,以便直接访问(因此能够访问此目录中的文件)。

但是,当请求http://localhost:8000/tmp 时,Symfony 会尝试匹配路由/tmp,这显然不存在。相反,我想获取/tmp 文件夹文件的列表。

我想没有办法简单地使用 PHP 内置网络服务器来处理这个问题,除了使用功能齐全的网络服务器之外我别无选择,但我只是想确保我没有错过任何选项仅仅使用内置的网络服务器就可以做到这一点?

【问题讨论】:

  • 我认为您无法访问这些文件,而且您不应该这样做。为什么要通过浏览器访问它们?
  • tmp 应该在公共目录下。除了公共目录之外,您真的不想让 Web 访问任何内容。
  • @JoppeDeCuyper 我这样做的原因是让用户使用通过 API 提供的链接下载一些生成的临时文件。无论如何,正如您和@Cerad 所提到的,让 Web 访问除 Symfony 公共目录之外的任何内容都是一个非常糟糕的主意。将它们放入public 目录可以。此外,我将在下面查看 Roman Litvinov 的建议。感谢您的回复。

标签: php symfony webserver


【解决方案1】:

不要在 /public 目录中添加您的 tmp 文件夹。如果您想更好地使用一些临时数据将它们保存在 /var 目录中,并使用 Finder component 访问您的控制器或服务中的此文件夹

【讨论】:

  • 感谢您的建议。我也要检查那个解决方案。
  • 根据你的原因我接下来会做:1)创建服务,它控制生成文件的过程并将其存储在tmp文件夹中,通过一些标准检索生成的文件。在此服务中,您可以使用 Finder 组件。 2)创建控制器,它使用服务并将生成的文件作为响应返回