【问题标题】:Set the actual DOCUMENT_ROOT for Apache with PHP使用 PHP 为 Apache 设置实际的 DOCUMENT_ROOT
【发布时间】:2013-01-04 19:24:30
【问题描述】:

我试图在不同的目录中拥有同一个 PHP 应用程序的多个版本。编写应用程序时,它必须位于 Apache 的 Document_root 中。

我尝试过$_SERVER['DOCUMENT_ROOT'] = '/htdocs/version2';,但这仅适用于使用$_SERVER['DOCUMENT_ROOT'].'filename.php' 包含的内容。

执行的所有其他文件都在原始根目录 /htdocs/version1 中。

如何使 document_root 为 PHP 会话实际更改,而不仅仅是设置变量 $_SERVER['DOCUMENT_ROOT']

【问题讨论】:

  • 我认为这实际上是不可能的,然后您就可以在共享托管环境中接管其他人的网站。但是,您可以做的是使用 mod_rewrite 重写所有文件,包括图像文件等。但是简单地设置多个指向同一文件夹的虚拟主机可能会容易得多。
  • 重写所有.htaccess文件!啊!每当您将 $_SERVER['DOCUMENT_ROOT'] 存储在变量中时,好友只需使用正则表达式替换 htdocs/ 字符串!
  • 他们会不会不一样virtual hosts
  • 这怎么可能。如果您更改文档根目录,那么您的脚本如何从它所在的位置执行。我认为这是不可能的
  • 大家好!感谢您的所有想法。好吧,也许这是不可能的。这个想法是让数据库存储特定用户使用的版本来匹配数据库版本和代码版本。这些版本非常相似,但第二版当然有一些新功能。我的意思是,我制作的第一个包含在所有版本中都是相同的,但从那里它们有点不同。

标签: php document-root


【解决方案1】:

你不需要做任何你正在做的事情(至少你刚刚写的,比如服务器的东西)。

情况 1。

如果您想将 2 个文件夹用作单独的网站(在本地计算机上),只需将这 2 个文件夹复制到 htdocs 文件夹中即可。使用

http://localhost/vesion1 //版本 1 实际上是您复制的文件夹名称.. 版本 2 也是

http://localhost/vesion2

访问它们的条目。

ps:如果这不起作用,您应该编辑您的网站配置 .php 文件并将主 url / 路径更改为版本 1 / 或版本 2 即! (这实际上是你的问题,而不是“服务器根”。)

如果您设置了数据库驱动的 url,您应该为您的复制/粘贴网站创建新数据库(或手动强制新的主 url/路径)。

例如,你可以有 10 个“版本”,只有一个 DB,或 10 个版本,有 10 个 DB(数据库)。

情况 2。

如果您想使用一个 index.php(根索引)运行 2 个版本/站点 - 实际上不是 2 个版本,而更像是“2 个网站合一” - 您应该编辑 .htaccess 文件以跳过根目录索引/否。

我有点困惑你想要实现什么,但我想情况 1 是可行的(如果你试图在本地机器上执行此操作)。

【讨论】:

  • 非常感谢您花时间回答。不幸的是,我认为任何建议都不会改善这种情况。我希望 url 相同,但根据用户是否更新到最新版本的天气,将会话发送到其中一个版本。透明。
  • 那么情况不会好转。对于一个 index.php 和许多文件夹(选项 2)来说,这听起来很复杂。但是这样解释是不可能的。
猜你喜欢
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多