【问题标题】:Force the server to define $_SERVER['HTTP']强制服务器定义 $_SERVER['HTTP']
【发布时间】:2015-08-05 17:43:22
【问题描述】:

我需要将网站从一台服务器复制到另一台服务器。在第一个服务器中,定义了$_SERVER['HTTPS'],但在第二个服务器中,我有这个错误Notice: Undefined index: HTTPS我不想更改代码。我得做多份,尽量少修改代码。

如何强制服务器在$_SERVER['HTTPS']处设置一个值?

【问题讨论】:

  • I don't want to change the code。您可以在引导文件中添加一行。这就是您需要做的所有事情。
  • 开启https?但不要为了弥补错误代码而破坏服务器。
  • @JohnConde 在我要复制的所有网站上?我认为这不是最干净的解决方案。为什么要投反对票?
  • 假设 $_SERVER['https'] 始终存在而不进行isset() 检查的代码是错误的。也许不是可怕的灾难性糟糕,但仍然很糟糕。
  • 然后关闭警告,这同样很糟糕——相当于把你的手指伸进耳朵里然后“拉拉拉听不到你的声音”。

标签: php apache ubuntu apache2


【解决方案1】:

如果您使用的是 Apache,并假设您启用了 .htaccess,您可以添加(或修改)它:

SetEnv HTTPS yourvaluehere

这应该在您的$_SERVER 超全局中定义HTTPS

如果您不想编辑 .htaccess,那么您可以在此处设置或修改 VHost 条目和 SetEnv

不确定这对您的代码库有多有效。 YMMV。

【讨论】:

  • 只是补充一点:显然我只是建议您这样做,以帮助您的代码库在开发环境中运行,我认为这是您的用例。我认为您绝对应该考虑 Marc B 等在 cmets 中提出的建议,建议修改代码库以允许可移植性并减轻环境痛苦。
  • 您可能需要对此进行测试。有很多事情可能会发生。一些问题:您是否有现有的 .htaccess 文件?如果没有,我假设您刚刚创建了一个并添加了这个值。然后您需要检查 Apache 是否配置为读取 .htaccess 文件。最简单的方法是保存一些随机垃圾文本,看看这是否会触发“内部服务器错误”消息或类似消息。让我知道你是怎么做的,我会尽力提供进一步的建议。
  • 除此之外,测试这是否有效的最可靠方法是在您的 webroot 中创建一个 test.php 文件,并添加类似 <?php echo isset($_SERVER['https']) ? $_SERVER['https'] : 'not working'; 的内容
猜你喜欢
  • 2016-02-19
  • 1970-01-01
  • 1970-01-01
  • 2012-05-09
  • 2012-08-10
  • 2013-09-23
  • 2011-07-27
  • 2016-12-31
  • 1970-01-01
相关资源
最近更新 更多