【问题标题】:How to create website folder above root directory of admin in PHP如何在PHP中的admin根目录上方创建网站文件夹
【发布时间】:2020-05-02 13:31:34
【问题描述】:

我试图找出用 PHP 以编程方式创建网站的最佳方法,但在这里或其他地方找不到任何类似的问题。 情况是这样的: 我有一个admin dashboard 和一个DB 连接到这个admin dashboard。 在这个仪表板中,我创建了一个包含所有必要设置的网站。像食物列表、图像和颜色等。 当我在仪表板中保存网站时,我需要在我的web server 上的admin panel 的根目录上方创建一个网站文件夹。 因此,它会创建所有将上传到该文件夹​​并连接到管理数据库以获取数据的文件和文件夹。 问题是我想创建数十个具有相同结构但具有不同数据和颜色等的网站,而不是作为管理仪表板的subdomains,而是作为main domain。 当然,域将在我的 c-panel 中手动创建。 这不是关于编码,而是关于解决这个问题的方法。 很高兴有任何建议。

【问题讨论】:

  • 如果您尝试通过 Web 界面执行此操作,您将无法执行此操作。根据其定义,Web 根目录上方的文件夹对 Web 服务器不可见。
  • @Dave“不能”并不完全准确; “不应该”当然是个好建议。根据文件权限和其他系统配置,这当然可以完成。如果运行 PHP 的用户具有写访问权限,它将起作用。不过,这可能不是最好(或最安全)的解决方案。
  • 最有可能不能怎么样?如果文件权限和其他配置允许它可能会损坏并且托管是可疑的。在正常情况下,不能在根目录(临时目录除外)之上写东西。
  • @Dave 这很公平。当然,能够更改 Web 服务器配置将是一个糟糕的配置。这当然不是在正常情况下可用或推荐的东西。我只是想指出这是可能的,不管它是否合理或一个好主意。

标签: php apache ftp webserver


【解决方案1】:

如果网站都共享相同的代码库,但只是有不同的数据,我会考虑根本不创建不同的文件夹。将每个站点的所有数据存储在数据库中。

然后您可以在 Apache 中创建一个单独的虚拟主机作为默认设置,它将处理所有没有明确匹配另一个请求的请求。然后,您的 PHP 代码可以查看 Host 标头以确定正在访问的站点,查询数据库以确定它是否有效并加载数据,然后提供适当的内容。

我不建议使用 PHP 动态更改系统配置。虽然它可以安全地完成,但这似乎过于复杂并且容易出现可能带来重大安全风险的错误。

显然,有很多方法可以解决这个问题,最终正确的方法将取决于您的用例以及每个网站的自定义和独特性。

【讨论】:

  • 当用户使用不同的 URL 访问网站时,这是否也有效。例如,如果有人使用 example1.com 访问,另一个使用 example2.com 访问?
  • 没错。 Apache 会将任何未按域明确匹配虚拟主机的请求路由到默认请求(例如,*:443)。将针对任何请求的域(example1.comexample2.com 等)执行相同的代码,并以编程方式确定正确的内容。每个域的唯一配置是将 DNS 指向正确的 IP。
  • 谢谢,另一个问题是,如果这会给支付网关带来任何问题,例如 PayPal 会检测到安全风险并阻止支付?
  • 在外部,没有人会知道其中的区别(尽管您可以通过注意到这些域路由到相同的 IP 来推断这种行为)。这与您为每个域显式配置虚拟主机没有什么不同。这都是您的服务器内部的,如果正确实施,用户或其他服务应该无法区分。 PayPal 应该没有任何问题。
猜你喜欢
  • 2017-04-27
  • 1970-01-01
  • 2015-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-23
  • 2020-12-17
  • 1970-01-01
相关资源
最近更新 更多